nib の複数のインスタンスを収容するカスタム コンテナー ViewController を構築しています。この nib は、DemoViewController としてサブクラス化された ViewController を保持します。
コンテナの viewWillAppear 中に、次のことを実行します。
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"Container will appear");
if (_selectedViewController.parentViewController == self)
{
// nowthing to do
return;
}
DemoViewController *vc = [[DemoViewController alloc] initWithNibName:@"Gauge" bundle:nil];
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"Gauge" owner:self options:nil];
// assuming the view is the only top-level object in the nib file (besides File's Owner and First Responder)
UIView *nibView = [nibObjects objectAtIndex:0];
// add as child VC
[self addChildViewController:vc];
[view1 addSubview:nibView];
// notify it that move is done
[vc didMoveToParentViewController:self];
}
実行時に、次の例外を受け取ります。
2012-07-02 21:59:22.734 ContainerViewController[21747:f803] コンテナ ビューの読み込み中 2012-07-02 21:59:22.737 ContainerViewController[21747:f803] コンテナが表示されます 2012-07-02 21:59:22.740 ContainerViewController[21747:f803] ゲージ ビューが読み込まれました 2012-07-02 21:59:22.742 ContainerViewController[21747:f803] ゲージは親コントローラーに移動します 2012-07-02 21:59:22.743 ContainerViewController[21747:f803] -[DemoViewController スーパービュー]: 認識されないセレクターがインスタンス 0x6a7daa0 に送信されました 2012-07-02 21:59:22.745 ContainerViewController[21747:f803] *** キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[DemoViewController スーパービュー]: インスタンス 0x6a7daa0 に送信された認識されないセレクター' *** 最初のスロー コール スタック: (0x13c9022 0x155acd6 0x13cacbd 0x132fed0 0x132fcb2 0x4fe4f 0x4a14b 0x2d2c 0xdc38f 0xdc5eb 0xdd4ed 0x4aa0c 0x4ff92 0x4a14b 0x39550 0x39670 0x39836 0x4072a 0x11596 0x12274 0x21183 0x21c38 0x15634 0x12b3ef5 0x139d195 0x1301ff2 0x13008da 0x12ffd84 0x12ffc9b 0x11c65 0x13626 0x276d 0x26d5) 例外をスローして呼び出された終了(lldb)
ここで何が起こっているのか誰にも分かりますか?残念ながら、Container View Controller に関するドキュメントはほとんどないので、困惑しています。