0

popoverviewcontrollerを使用してViewControllerに戻ろうとしていますが、何も起こりません。
まず、AppDelegateに最初のViewControllerを次のコードでロードします。

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.welcomeMenu];
nav.navigationBarHidden = YES;
self.window.rootViewController = nav;
nav = nil;

このように必要なため、navigationBarは非表示になっています
。このViewControllerでは、ボタン付きのメニューを表示しています。次に、別のViewControllerを表示するために、次のコードを使用しています。

SecondViewController *secView = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

[UIView  beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
[self.navigationController pushViewController:secView animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
secView = nil;

そして、SecondViewControllerがロードされます(ただし、回転は機能しません)...
私のSecondViewControllerは、コードにSplitViewControllerを追加します(左側のテーブルにはNavigationController、右側のテーブルには別のNavigationControllerがあります)
。次のコードを使用して、戻るためのボタンを手動で追加しています。

[self.navigationController popViewControllerAnimated:NO];

しかし、何も起こりません... self.navigationControllerを出力すると、出力は(null)になるので、これが問題だと思いますが、なぜself.navigationControllerがnullなのですか?そして、正しくポップするために私は何をする必要がありますか?
AppDelegateコードでnavigationBarを非表示にしないと、自動的に表示されるbackButtonは正常に機能しますが、手動で非表示にしたい場合は機能しません...

4

2 に答える 2

2

SecondViewControllerから分割ビューコントローラーをロードすることはできません。

SplitViewControllersを参照してください。

分割ビューコントローラは、作成するインターフェイスのルートである必要があります。つまり、UISplitViewControllerオブジェクトからのビューを、アプリケーションのウィンドウのルートビューとして常にインストールする必要があります。分割ビューインターフェイスのペインには、ナビゲーションコントローラ、タブバーコントローラ、またはインターフェイスを実装するために必要なその他のタイプのビューコントローラが含まれる場合があります。分割ビューコントローラをモーダルで表示することはできません。

于 2012-09-05T17:12:18.367 に答える
0

SecondViewControllerをナビゲーションコントローラーのviewControllersに追加したことはありません。そのため、self.navigationControllerはnullをログに記録するため、新しいコントローラーでviewControllers配列を更新するだけです。

于 2012-09-05T17:00:14.830 に答える