簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM