【发布时间】:2009-05-21 17:56:16
【问题描述】:
我有一个从 .nib 文件加载的视图控制器类。但是,我还想以编程方式向该视图添加控件(如 UISwitch)(UISwitch 未添加到 nib 文件中)。我应该在代码的哪个部分分配 UISwitch 控件、viewDidLoad 或 loadView 方法?
【问题讨论】:
标签: iphone
我有一个从 .nib 文件加载的视图控制器类。但是,我还想以编程方式向该视图添加控件(如 UISwitch)(UISwitch 未添加到 nib 文件中)。我应该在代码的哪个部分分配 UISwitch 控件、viewDidLoad 或 loadView 方法?
【问题讨论】:
标签: iphone
我会在 viewDidLoad 上执行此操作。肯定的。
来自 Apple 的文档:
讨论 该方法仅被调用 当 view 属性为 nil 并且它 需要显示。你不应该 直接调用这个方法。
如果您创建该视图的视图 控制器以编程方式管理, 那么你应该重写这个方法 创建您的视图。默认 实现创建一个 UIView 对象 没有子视图。
但是,如果您初始化视图 使用 nib 文件——也就是说,你设置 thenibName 和 nibBundle 属性——那么你不应该 覆盖此方法,因为 默认实现已经重新加载 笔尖文件。而是覆盖 viewDidLoad 方法设置任何 nib 文件后的属性是 已加载。
在您的情况下,UIView 是从 NIB 文件创建的。
【讨论】:
使用viewDidLoad。此外,您应该删除您在 viewDidUnload 方法中添加的所有内容。
【讨论】:
如果您从 NIB 加载,实现 loadView 将导致错误。使用viewDidLoad。正如 Pablo 所说,Apple 对此进行了详细记录。
【讨论】: