对UITableViews使用Interface Builder
我在iPhone开发学习过程中还很早。我正在努力使自己陷入各种困境。现在,我刚刚学习了基本的NavigationController模板,并且试图创建一个带有几个文本字段的简单分组表视图。我似乎无法做的是获取Interface Builder,使我可以将UITableViewCell放到UITableView中,然后再将文本字段添加到Cell中。这是否有可能(似乎应该认为UITableViewCell是可拖动的控件)?
如果不是,那是否就意味着所有这些都是我自己编写的代码?
解决方案
不幸的是,它实际上并不能通过委托在运行时在表格视图中生成单元格的方式来工作。事实证明,这是非常简单的代码。查看tableview示例代码,它很容易遵循。
我们可以使用Interface Builder创建单元格,但必须使其成为顶层对象,而不是表视图的子级。然后,我们可以在视图控制器的tableView:cellForRowAtIndexPath:函数中返回此单元格。
确保在Interface Builder中为该单元提供一个标识符,然后将相同的标识符与dequeueReusableCellWithIdentifier一起使用:(请参阅示例代码以了解其工作原理-想法是重新使用单元,操作系统将仅分配适当数量的单元同时显示屏幕。节省内存的聪明方法。)
使用Boot To The Head的方法要小心。如果我们没有正确处理" IBOutlets",我们将泄漏。我将尽我最大的努力解释这一点,而不发布代码(NDA)。如果计划使用IB创建单元格,则将UITableViewCell设为自己的Xib文件。将文件的所有者设置为UIViewController子类(或者UITableController)。用类似于UITableViewCell * cellFactory的名称来调用IBOutlet。在" UITableViewDataSource"方法中," tableView:cellForRowAtIndexPath:"执行以下伪代码;
- 尝试使用我们在IB中设置的标识符使单元出队
- 如果成功,那就完成了。只需使用电池
- 否则,我们需要创建一个新的单元格。使用带有适当的xib文件的
[NSBundle mainBundle] loadNibNamed:owner:options:
方法。这将用新鲜的单元格填充cellFactory ivar。棘手的部分到了。 - 设置" cell = cellFactory",然后释放" cellFactory",并将其设置为nil,以确保我们不会意外使用它。现在我们可以放心使用电池了
这是关于将UI构建器用于UITableView的很好的教程