あなたの問題は、ストーリーボードのセグエがポップオーバーコントローラーを表示する方法にあると思います。一般的な問題のようです。
したがって、これを解決する最も簡単な方法は、モーダルウィンドウの作成をコード内に移動することです。そんな感じ:
あなたのViewController.h
書き込みの中に
@property (strong) UIPopoverController * popoverController;
- (void) showNavigationController;
あなたのViewController.m
書き込みの中に
@synthesize popoverController;
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
[super prepareForSegue:segue sender:sender];
if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]){
if (popoverController) [popoverController dismissPopoverAnimated:NO];
UIStoryboardPopoverSegue * popoverSegue = (UIStoryboardPopoverSegue *) segue;
popoverController = popoverSegue.popoverController;
}
}
- (void) showNavigationController
{
[popoverController dismissPopoverAnimated:NO];
popoverController = nil;
UIStoryboard *ub = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *controller = [ub instantiateViewControllerWithIdentifier:@"navigationController"];
[self presentModalViewController:controller animated:YES];
}
次に、ナビゲーションコントローラのMainStoryboardセット識別子内で、navigationController
[テーブルの表示]ボタンをセグエする代わりに、「タッチアップインサイド」デリゲートを設定します。このデリゲートは、showNavigationController
からメソッドを実行しますViewController
(NSNotificationCenter
例として、を使用)