2

UIViewController から継承するクラスがあります。そこで、次のようなivarの初期化を行いたい:

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle { // Load the view nib
    NSLog(@"Hello Earth!");
    if (self = [super initWithNibName:nibName bundle:nibBundle]) {
        self.visibleIndex = 0;
        NSLog(@"Hello Planet!");
    }
    return self;
}

何らかの理由で、ペン先からロードされたコンテンツが表示されます。しかし、別の理由で、この初期化子は決して呼び出されません。ログメッセージが表示されません。それの何がいけないの?私は確かにペン先を持っているので、実際にはこれを呼び出す必要がありますよね?

4

2 に答える 2

5

UIViewController が nib によって作成されている場合、このメソッドは使用されません。viewDidLoad をオーバーライドする必要があります。

-(void) viewDidLoad {
    [super viewDidLoad];
    NSLog(@"Hello Planet");
}

initWithNibName は、コントローラーを実際にコードでインスタンス化する場合にのみ使用されます。

于 2009-05-27T12:08:44.480 に答える
0

viewLoadedではなくを考えていると思いますinitWithNibName。viewLoaded は、ビューをプログラムでセットアップする場合に呼び出されるものです。initWithNibNameペン先をロードしている場合に呼び出されます....したがって、名前は?しかし、ビューの設定は まで行うべきではありませんが、配列やその他の変数の設定など、viewDidLoadその他の初期化は で行う必要があります。initWithNibName

于 2010-09-14T00:45:38.150 に答える