从Storyboard加载自定义TableViewCell而不是nib

时间:2015-12-14 06:15:16

标签: ios xcode swift uitableview storyboard

我是StackOverflow的新手,并且已经在这个问题上苦苦挣扎了一段时间,真的希望有人可以提供帮助并指出我正确的方向。

我正在尝试制作自定义UITableView和自定义UITableViewCell - 它们将共同构成一个自定义UITableView,我想在多个项目中重复使用它。所以我要做的是在自定义UITableView中封装所有行+键盘处理等,并且单元格在自定义UITableViewCell中查找。

在一个新的StoryBoard中,我添加了一个UIViewController并添加了一个UITableView,设计了我希望表格的外观,并为其添加了原型单元格。我用适当的标签,字段和约束来设计它。让我们调用这个自定义外观表" MyCustomTableWithCustomCell"

所以现在我有自定义表,我想要的是在其他故事板中重用它。

我找到了一个解决方案(感谢stackoverflow!),但它并不是我想要的:

  • 我从MyCustomTableWithCustomCell中提取了原型单元格(cut 并粘贴到Empty Interface Builder文档中并将其保存为 厦门国际银行。
  • 然后我通过registerNib()
  • 在我的自定义UITableView中使用它
  • 我可以在任何故事板中创建一个新的UIViewController,添加一个 UITableView,将其类设置为MyCustomTableWithCustomCell,它会 做我想做的事

问题是,我不喜欢单元格在单独的xib文件中的方式,因为它无法通过IB自动预览在不同的设备尺寸上轻松预览。无论我选择哪种设备尺寸,它总是看起来一样。除非我每次想要更改任何内容时都在Simulator中构建和预览,否则很难看出设计如何适应屏幕的其他部分。如果单元格设计可以作为原型TableViewCell的一部分保留在蓝图故事板中,我更喜欢。然后我可以轻松修改它,预览不同的设备尺寸等。

所以我的问题是,做同样事情的最佳方法是什么,而不是使用xib文件,使用Storyboard中的Prototype Table Cell作为蓝图。或者换句话说,有没有办法在运行时将Prototype单元格提取到Nib中,以便在创建自定义表格时可以注册它。

EG。类似的东西:

    var myTableCellNib = myStoryBoard.myViewController.myTableView.myPrototypeCell.getNib()
    registerNib(myTableCellNib)

期待听到您的想法!

1 个答案:

答案 0 :(得分:0)

制作UITableViewCell Swift文件 -

import UIKit

    class ClassName: UITableViewCell {

    @IBOutlet weak var lblData: UILabel!


    override func awakeFromNib() {
        super.awakeFromNib()


    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

转到故事板 - >视图控制器 - >表视图 - >拖放表格视图单元格并设计它,将类名称作为ClassName和标识符。

转到cellForRowAtIndexPath

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    var cell : ClassName! = tableView.dequeueReusableCellWithIdentifier("identifier") as! ClassName
    cell.lblData.text = ""
    return cell as ClassName
}