0

ストーリーボードを作成し、.xib ファイルを操作する前に、このコードを使用して初期化中に画面を調整しました。

- (id)initForNewItem:(BOOL)isNew {
    self = [super initWithNibName:@"NAME" bundle:nil];
    if (self) {
        if (isNew) {
            // Place some buttons only when isNew is true
        }
    }

    return self;
}

次に、これを実装して、initWithNibName が直接呼び出されたときに例外を生成しました。これを回避したかったからです。

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    @throw [NSException exceptionWithName:@"Wrong initializer" reason:@"Use initForNewItem:" userInfo:nil];
    return nil;
}

次に、別のビューコントローラーがカスタム init を呼び出すことができ、画面が設定されます。

MyViewController *myViewController = [[MyViewController alloc] initForNewItem:YES]; // Or NO ofcourse depending on the situation.

今、私はストーリーボードを使用していますが、initWithNibName は呼び出されません。代わりに initWithCoder のみが呼び出されますが、このメソッドはストーリーボードからのみ呼び出すことができますか? では、ストーリーボードを使用しているときに同様のことを行うにはどうすればよいでしょうか?

4

1 に答える 1