iphone - 一个具有多个 "File' 所有者的 xib 文件

标签 iphone ios uitableview xib reusability

我有三个不同的 UITableView,每个都有自己的 View ,可通过选项卡访问。所有三个表最好共享相同的自定义 UITableViewCell 类和 .xib 文件。

我从一个表开始,将 .xib 的类设置为我的自定义类,将 .xib 的文件所有者设置为表的父 UIViewController,效果很好。所有与自定义 View 相关的代码都在单元格的类中(背景图像基于 Controller 设置的属性,自定义单元格高度基于标签需要的行数,基于 Controller 设置的单元格属性等) .

结果很好:单元格负责所有视觉布局并响应用户在单元格控件上的操作,而 View Controller 负责创建单元格并设置它们的数据。

现在我需要在其他表中重用该单元格,但是,自定义单元格的 .xib 具有单个文件所有者的事实是一个问题。除了复制 .xib 文件,是否有一种允许多个 Controller 拥有它的简单方法?

最佳答案

没有严格执行 nib 的文件所有者。相反,它仅用于确定可用的导出和操作,并在 Interface Builder 中设置绑定(bind)。无论 nib 文件中设置的类是什么,您都可以加载一个带有任何对象作为其文件所有者的 nib。加载 nib 时,它会向文件所有者发送消息以重新建立绑定(bind)。如果实际的 File's Owner 对象无法识别这些选择器,您将触发“无法识别的选择器”异常。这意味着如果您的 nib 将一些 UITableViewCell 绑定(bind)到其文件所有者的“cell”导出,那么任何具有“cell”属性的对象都可以加载该 nib。您只需要注意不要使用此行为来发送无法识别的选择器或意外的 socket 类。

在您的情况下,考虑创建一个单独的 UIViewController 子类作为您的 nib 的文件所有者。让您的三个现有 Controller 中的每一个都扩展该 View Controller 子类。这样,它们都可以继承 nib 文件所期望的同一组属性,并且都可以安全地加载该 nib,同时仍然定义它们自己的自定义行为。

关于iphone - 一个具有多个 "File' 所有者的 xib 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5849330/

相关文章:

ios - 将 UITextField 委托(delegate)连接到自定义 TableView 单元格的文件所有者不起作用 Swift 3

ios - UITableViewCell 内的 UIView 转换不起作用

iphone - .m 文件中的一个 IBAction 中有多个 if 语句不起作用

iphone - 如何检查 NSLog 输出?

ios - UIView 表面自定义转换/动画(如 'a water drop effect' )

ios - 无法使用 API 获取 Panoramio 数据

iphone - 如果从上面的部分中删除一行,则该部分下面的标题会重复

iPhone:滚动时展开 UITextView

iphone - 使用 SpriteKit 驱动计算

ios - UITableView 从 NIB 文件加载自定义单元格抛出 NSInternalInconsistencyException