【问题标题】:Using Interface Builder for UITableViews为 UITableView 使用 Interface Builder
【发布时间】:2010-09-13 04:05:40
【问题描述】:

我还处于 iPhone 开发学习过程的早期阶段。我正试图了解各种作品。现在,我刚刚采用了基本的 NavigationController 模板,并且正在尝试创建一个带有几个文本字段的简单分组表视图。我似乎无法做的是让 Interface Builder 允许我将 UITableViewCell 放入 UITableView 中,这样我就可以将文本字段添加到 Cell 中。这甚至可能吗(似乎它应该被赋予 UITableViewCell 是一个可拖动控件的事实)?

如果不是,这是否意味着所有这些都是我需要自己编写的代码?

【问题讨论】:

    标签: iphone cocoa-touch uitableview interface-builder


    【解决方案1】:

    您可以使用 Interface Builder 创建单元格,但您必须使其成为顶级对象,而不是表格视图的子级。然后,您可以在视图控制器的 tableView:cellForRowAtIndexPath: 函数中返回此单元格。

    确保在 Interface Builder 中给单元格一个 identifier,然后使用与 dequeueReusableCellWithIdentifier: 相同的标识符(请参阅示例代码以了解其工作原理 - 想法是单元格被重复使用 - 操作系统一次只会分配尽可能多的单元格在屏幕上。节省内存的聪明方法。)

    【讨论】:

      【解决方案2】:

      小心 Boot To The Head 的方法。如果您没有正确处理您的IBOutlets,您将泄漏。我将在不发布代码 (NDA) 的情况下尽我所能解释这一点。如果您打算使用 IB 来创建您的单元格,请将 UITableViewCell 创建为自己的 Xib 文件。将文件的所有者设置为您的 UIViewController 子类(或 UITableController)。调用IBOutlet 类似UITableViewCell *cellFactory。在UITableViewDataSource 方法tableView:cellForRowAtIndexPath: 中执行以下伪代码;

      1. 尝试使用您在 IB 中设置的标识符将单元格出列
      2. 如果成功,您就完成了。只需使用单元格
      3. 否则您需要创建一个新单元格。将[NSBundle mainBundle] loadNibNamed:owner:options: 方法与您的正确xib 文件一起使用。这将用一个新的单元格填充 cellFactory ivar。棘手的部分来了。
      4. 设置cell = cellFactory 然后释放cellFactory 并将其设置为nil 以确保您不会意外再次使用它。您现在可以正常使用手机了

      【讨论】:

        【解决方案3】:

        不幸的是,它并没有真正以这种方式工作 - 表格视图中的单元格是由委托在运行时生成的。不过,事实证明这是非常简单的代码。查看 tableview 示例代码,很容易理解。

        【讨论】:

          【解决方案4】:

          这是一个很好的使用UI builder for UITableView's的教程

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-11-14
            • 1970-01-01
            • 2015-10-20
            • 1970-01-01
            • 1970-01-01
            • 2011-04-15
            • 1970-01-01
            相关资源
            最近更新 更多