在笔尖而不是情节提要中制作原型单元
Posted
技术标签:
【中文标题】在笔尖而不是情节提要中制作原型单元【英文标题】:Prototype Cells in a nib instead of a storyboard 【发布时间】:2012-01-24 08:12:47 【问题描述】:为了更好的重用性,我想在我的 Storyboard 之外创建一个表格视图。
现在,当我在 Xcode 中使用 Nib 创建基于 UITableView
的 ViewController 时,我会在 nib 文件中获得默认的 TableView。但是,我无法在 Interface Builder 中像在 Storyboard 中那样添加原型单元。
目前无法在笔尖中添加原型单元格还是我遗漏了什么。
非常感谢您的帮助。
【问题讨论】:
除了上面的正确答案之外,我会参考这个案例的非常详细的解决方案。 - Link to StackAnswer(通过使用UITableView: registerNib:forCellReuseIdentifier:
和 tableView:cellForRowAtIndexPath:
与 .xib
文件)
这个问题/答案让我有点困惑。我来这里是为了在 xib 中定义表格视图时寻找在表格视图中使用原型单元格的方法。在情节提要中完全有可能是的,但是在 xib 中不知何故没有这样的功能。
【参考方案1】:
ios 5 在 UITableView 上包含一个新方法:registerNib:forCellReuseIdentifier:
要使用它,请将 UITableViewCell 放在笔尖中。它必须是 nib 中唯一的根对象。
您可以在加载 tableView 后注册 nib,然后当您使用单元格标识符调用 dequeueReusableCellWithIdentifier: 时,它将从 nib 中提取它,就像您使用 Storyboard 原型单元格一样。
【讨论】:
太棒了 - 我只是想知道如何做到这一点,在这里搜索,看到你的答案,然后看到我的(结果是错误的!)是公认的答案。贝西,你应该接受这个。 @jrturton 感谢您的提醒 有没有办法将这些单元格的文件所有者设置为它们注册的控制器? 感谢您的解决方案。这可能是迄今为止我遇到的用于情节提要的可重复使用的 tableview 单元格的最佳方式。 唯一的缺点是你必须自己连接所有的动作选择器,我只是通过在 willDisplayCell 期间调用 addTarget 然后在单元格的 prepareForReuse 方法期间调用 removeTarget 来做到这一点。有什么更聪明的方法可以让你在故事板中连接东西吗?【参考方案2】:在 Swift 4 中:
-
从 UITableViewCell 创建新的 CocoaTouch 类,子类。
重要 - 启用复选框'同时创建 XIB 文件',它会创建一个 Swift 文件和一个 .xib 文件
在 Xib 中添加标签,就像在 Storyboard 中为原型单元所做的那样
将标签出口连接到新的 swift 文件
重要 - 注册在 viewDidLoad 中的 nib 文件
yourTableview.register(UINib.init(nibName: "CustomCellTableViewCell", bundle: nil), forCellReuseIdentifier: "Cell")
(或)
yourTableview.register(UINib(nibName: "CustomCellTableViewCell", bundle: Bundle.main), forCellReuseIdentifier: "Cell")
在 cellForRowAtIndexPath 中实现数据源和委托,并将类型转换为 CustomCell。
【讨论】:
以上是关于在笔尖而不是情节提要中制作原型单元的主要内容,如果未能解决你的问题,请参考以下文章