![](/img/trans.png)
[英]Initialize Custom UIViewController in another's UIViewController init
[英]UIVIewController custom init method
我想為我的UIViewController子類實現一個自定義初始化方法來“替換”initWithNibName方法。
這是代碼:
- (id) initWithMessage:(NSString *)message {
if ((self = [super initWithNibName:@"ToolTip" bundle:nil])) {
label.text = message;
}
return self;
}
標簽是從xib加載的,但此時對標簽的引用是nil(可能是因為xib尚未加載?)。 有誰知道解決方案嗎? 謝謝
我知道這是一個老問題,但正確的答案是在加載視圖后使用viewDidLoad
方法進行任何其他設置。 視圖在需要之前不會加載,並且可以在收到內存警告時卸載。 因此,不應在init
方法中觸及視圖控制器的視圖。
您應該以編程方式聲明標簽並在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”方法中釋放標簽。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.