これに関連する複数のスレッドを読んだ後、デリゲートを間違った時間に設定しているに違いないと結論付けることができますが、これを修正するためにデリゲートをどこに割り当てるかわかりません。
マスターでテーブル行を選択すると、詳細ビュー コントローラーを次のように置き換えます。
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
CustomerDetailViewController *newvc = [[CustomerDetailViewController alloc] initWithNibName:@"CustomerDetailViewController" bundle:nil withCustomer:[custData objectForKey:@"name"]];
[app.detailNavigationController setViewControllers:[NSArray arrayWithObjects:newvc, nil]];
これにより、View Controller が設定されます。CustomerDetailViewController では、次のようにデリゲートを割り当てます。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
app.splitViewController.delegate = self;
}
return self;
}
テーブルの行が縦向きモードで選択されている場合、barbuttonitem が表示されません。ただし、横向きに回転してから縦向きに戻すと、バーボタン項目が表示されます。
initWithNibName でデリゲートを設定するとこれが修正されると考えましたが、明らかにそうではありません。
デリゲートをいつどこに割り当てるか教えてもらえますか??