nibファイルをにロードする方法を実験していますUIViewController
。
Emailという別の nib ファイルを作成しました。initWithNibName
最初に、View Controller がロードされたときにメソッドが呼び出されないことに気付きました。だから私はviewDidLoad
このように手動でメソッドから呼び出しました、
[self initWithNibName:@"Email" bundle:[NSBundle mainBundle]];
それは動かなかった。また、 Expression result usedという警告が表示されました。
で、ネットで検索してこの記事にたどり着き、loadView
説明通りの方法で実装したところ、
- (void)loadView
{
[super loadView];
UINib *nib = [UINib nibWithNibName:@"Email" bundle:nil];
[nib instantiateWithOwner:self options:nil];
}
メソッドが呼び出されますが、まだビュー コントローラーは空です!
ここで見落としていることと、これを行う方法を誰か教えてもらえますか?
ありがとうございました。
アップデート:
まず、すべての応答に感謝します。ただし、 voromaxとsvenaの回答は、私があまり好きではないセグエを削除してニブを自動的にロードする必要があることを示唆しています。Anil's answer works find で、ジャンプする最後のハードルが 1 つあります。
複数の nib ファイルがあります。ユーザーの選択に応じて、特定のペン先をロードする必要があります。だから私が試したのは、すべてのニブを配列の中に入れて、
- (void)loadView
{
[super loadView];
NSArray *nibs = [[NSArray alloc] initWithObjects:
[[NSBundle mainBundle] loadNibNamed:@"Facsimile" owner:self options:nil],
[[NSBundle mainBundle] loadNibNamed:@"Email" owner:self options:nil],
[[NSBundle mainBundle] loadNibNamed:@"Memorandum" owner:self options:nil],
[[NSBundle mainBundle] loadNibNamed:@"ProjectMemo" owner:self options:nil], nil];
self.view = [nibs objectAtIndex:0];
}
このようなインデックスを使用してアクセスしますself.view = [nibs objectAtIndex:1];
。しかし、それはエラーをスローします * キャッチされない例外 'NSInvalidArgumentException' によるアプリの終了、理由: '-[__NSArrayM _setViewDelegate:]: 認識されないセレクターがインスタンス 0xd56fd20 に送信されました'*
このエラーが発生するのはなぜですか? それが不可能な場合は、提案を受け付けています。
再度、感謝します。そして、これを少し引きずってすみません。