ios – ViewController中的UITableView,带有自定义单元格而没有故事板

ios – ViewController中的UITableView,带有自定义单元格而没有故事板,第1张

概述我正在使用 Swift 2.0和Xcode 7.2. 我想学习如何制作没有故事板的应用程序(带有纯编程代码的UI).首先,我试图在一个自定义UITableView单元格中创建一个带有三个标签的简单应用程序,该单元格将通过互联网动态更新. 这是我迄今取得的成就: >创建了一个新的Swift项目并从项目中删除了main.storyboard >在AppDelegate中添加了一个视图控制器作为root 我正在使用 Swift 2.0和Xcode 7.2.

我想学习如何制作没有故事板的应用程序(带有纯编程代码的UI).首先,我试图在一个自定义UItableVIEw单元格中创建一个带有三个标签的简单应用程序,该单元格将通过互联网动态更新.

这是我迄今取得的成就:

>创建了一个新的Swift项目并从项目中删除了main.storyboard
>在AppDelegate中添加了一个视图控制器作为rootVIEwController
>包含在此视图中创建UItableVIEw的代码

以下是我想要完成的其他任务(所有这些都是以编程方式完成的,不使用属性检查器):

>将UINavigationController插入VIEwController
>添加带有三个标签的自定义单元格
>使用数据更新表格视图

如果可能的话,我希望能够让一切都在横向模式下工作.

谁能告诉我怎么做?

AppDelegate.swift

func application(application: UIApplication,dIDFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {    // OverrIDe point for customization after application launch.    window = UIWindow(frame: UIScreen.mainScreen().bounds)    window!.backgroundcolor = UIcolor.whitecolor()    window!.rootVIEwController = VIEwController()    window!.makeKeyAndVisible()    return true}

VIEwController.swift

import UIKitclass VIEwController: UIVIEwController,UItableVIEwDelegate,UItableVIEwDataSource {    var tableVIEw = UItableVIEw()    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        // Do any additional setup after loading the vIEw,typically from a nib.        tableVIEw = UItableVIEw(frame: self.vIEw.bounds,style: UItableVIEwStyle.Plain)        tableVIEw.dataSource = self        tableVIEw.delegate = self        tableVIEw.backgroundcolor = UIcolor.whitecolor()        tableVIEw.frame = CGRectMake(0,self.vIEw.bounds.wIDth,self.vIEw.bounds.height)//Optional for table size        self.vIEw.addSubvIEw(tableVIEw)    }    func tableVIEw(tableVIEw: UItableVIEw,numberOfRowsInSection section: Int) -> Int {        return 5    }    func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell {        let myCell = UItableVIEwCell(style: UItableVIEwCellStyle.SubTitle,reuseIDentifIEr: "myIDentifIEr")        myCell.textLabel?.text = "\(indexPath.row)"        myCell.detailTextLabel?.text = "SubTitle"        return myCell    }    overrIDe func dIDReceiveMemoryWarning() {        super.dIDReceiveMemoryWarning()        // dispose of any resources that can be recreated.    }}

我不知道如何以编程方式创建自定义单元格,我可以添加对象.

帮助将不胜感激.

谢谢.

解决方法 如果你没有使用故事板,你可以在你的VIEwController所在的类上面定义你的单元格,你的表格就像myCell那样是你的自定义UItableVIEwCell,如下所示.

在这个myCell中,您可以根据需要添加任意数量的对象,并在setUpCell()块中进行设置.

完整代码如下,请确保在cellForRowAtIndexPath中使用单元格时调用setUpCell().

VIEwController.swift

import #UIKitclass myCell: UItableVIEwCell {// define label,textFIEld etc    var aMap: UILabel!// Setup your objects    func setUpCell() {        aMap = UILabel(frame: CGRectMake(0,200,50))        self.contentVIEw.addSubvIEw(aMap)    }}class VIEwController: UIVIEwController,UItableVIEwDataSource {    var tableVIEw = UItableVIEw()    // for ex,lets say,your data array is defined in the variable below    var dataArray = [[String:AnyObject]]() //Array of your data to be displayed    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        // Do any additional setup after loading the vIEw,style: UItableVIEwStyle.Plain)        tableVIEw.dataSource = self        tableVIEw.delegate = self        tableVIEw.backgroundcolor = UIcolor.whitecolor()        // register your class with cell IDentifIEr        self.tableVIEw.registerClass(myCell.self as AnyClass,forCellReuseIDentifIEr: "Cell")        self.vIEw.addSubvIEw(tableVIEw)     dataArray = // Something loaded from internet     }  func tableVIEw(tableVIEw: UItableVIEw,numberOfRowsInSection section: Int) -> Int {        return flightDataArr.count    }    func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell {       // let myCell = tableVIEw.dequeueReusableCellWithIDentifIEr("myIDentifIEr",forIndexPath: indexPath)        var cell:myCell? = tableVIEw.dequeueReusableCellWithIDentifIEr("Cell",forIndexPath: indexPath) as? myCell        if cell == nil {            cell = myCell(style: UItableVIEwCellStyle.Default,reuseIDentifIEr: "Cell")        }        var data = dataArray[indexPath.row]        cell?.setUpCell()        cell!.aMap.text = String(dict["productname"])        return cell!    }

看看这是否适合你.我从未使用编程来创建tableVIEw,因此这可能不是以编程方式创建tableVIEw的最佳方式.如果可能的话,我希望其他人可以帮助你找到更好的答案.

总结

以上是内存溢出为你收集整理的ios – ViewController中的UITableView,带有自定义单元格而没有故事板全部内容,希望文章能够帮你解决ios – ViewController中的UITableView,带有自定义单元格而没有故事板所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1015570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存