1

ストーリーボードからインスタンス化するカスタム コンテナー ビュー コントローラーがあり、ストーリーボードからアウトレットを設定したサブビューのコンテンツを変更するメソッドが多数あります。

この ViewController をインスタンス化する方法はたくさんありますが、現時点では、どのようにインスタンス化しloadView.viewも、アウトレット (が呼び出されるまではすべて null ポインターであるためloadView)。

理想的には、ViewController を初期化するさまざまな場所に呼び出しを配置するのではなく、この問題を回避するために、loadViewまたは.view単一の初期化メソッドに呼び出しを配置し​​たいと考えています。ViewController.view

UIViewControllerクラスには指定された初期化子がありますか? そうでない場合、カスタム初期化ロジックでどのメソッドを変更して、ViewController の初期化時に確実に呼び出されるようにする必要がありますか?

4

2 に答える 2

-1

これらをオーバーライドして、初期化のケースをカバーできます。

- (id) initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if(self)
    {
        [self customInit];
    }
    return self;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        [self customInit];
    }
    return self;
}

- (id)init
    {
        self = [super init];
        if (self) {
            [self customInit];
        }
        return self;
    }

- (void) customInit
{
    //custom init code
}

ただし、これは良い方法ではなく、viewDidLoad でサブビュー操作を行う必要があります。

于 2013-06-28T13:44:05.920 に答える