【发布时间】:2013-03-30 15:53:55
【问题描述】:
我需要创建一个满足以下条件的自定义 UI 组件:
- 它将包含 UIView、Label、Button 和 TableView 的组合。
- 应该可以通过编程方式对其进行实例化 - 或者 - 在 nib 编辑器中放置 UIView 并将检查器中的类更改为我的自定义组件类。 (它会维护/保留放置的 UIView 中的主框架值)
我已经开始尝试它,我选择了 UIView 但它不处理 ..cellForRow... 单元格方法。另一方面,如果我使用 UIViewController,那么我在检查器中的类更改不起作用并且应用程序崩溃。
我应该选择哪一个 - UIView、UIviewController 或 NSObject?
【问题讨论】:
-
如果继承 NSObject 则无法获取 UIView 等所有功能。我会说从最低级别扩展,然后使用协议来使用其他方法/功能/行为。
-
在这种情况下,我将从 UITableView 继承,因为它是最复杂的 UIItem,因此大多数接口已经定义。 UIView 也可以工作,因为它是所有这些的共同基础。但随后必须添加 UIButton、UILabel 和 UITableView 的所有(需要的)附加方法和属性。所以最终它取决于新视图对象需要具有哪些接口以及它们需要覆盖到哪个扩展。然后我会选择其中大多数不需要在子类中覆盖并且可以按原样使用的那个。
-
您的对象不必处理 cellForRowAtIndexPath: 或任何其他数据源方法——表格视图不需要。这应该由您分配为对象的数据源和委托的控制器处理,这可能是其视图将您的自定义对象作为子视图的控制器。我确实认为 UIView 是正确的超类。
标签: ios objective-c cocoa-touch custom-controls