UIVIewController 自定义初始化方法
Posted
技术标签:
【中文标题】UIVIewController 自定义初始化方法【英文标题】:UIVIewController custom init method 【发布时间】:2010-06-04 10:40:21 【问题描述】:我想为我的 UIViewController 子类实现一个自定义初始化方法来“替换”initWithNibName 方法。
这是代码:
- (id) initWithMessage:(NSString *)message
if ((self = [super initWithNibName:@"ToolTip" bundle:nil]))
label.text = message;
return self;
标签是从 xib 加载的,但此时对标签的引用为零(可能是因为 xib 尚未加载?)。有谁知道解决方案?谢谢
【问题讨论】:
【参考方案1】:我知道这是一个老问题,但正确的答案是在视图加载后使用viewDidLoad
方法进行任何其他设置。视图在需要时才会加载,并且在收到内存警告时可能会被卸载。因此,不应在 init
方法中触及视图控制器的视图。
【讨论】:
【参考方案2】:您应该以编程方式声明标签并在 init 中对其进行初始化,而不是从 nib 中进行。
是这样的:
假设UILabel *label
是一个类变量,为它定义了@property
和@synthesize
。
- (id) initWithMessage:(NSString *)message
if ((self = [super initWithNibName:@"ToolTip" bundle:nil]))
label = [[UILabel alloc] init];
label.text = message;
[self.view addSubView:label];
return self;
在“dealloc”方法中释放标签。 希望这可以帮助。
【讨论】:
以上是关于UIVIewController 自定义初始化方法的主要内容,如果未能解决你的问题,请参考以下文章
如何在通用 UIViewController 之后设置自定义 UIViewController?
重构大方法以在 UIViewController 中创建自定义 UIView
didFinishLaunchingWithOptions方法,该方法仅创建自定义UIViewController