新しいルート コントローラーをナビゲーション スタックにプッシュしようとしていますが、サイド リビール メニューを使用しています。
私のアプリデリゲートには次のものがあります:
welcomeViewController = [[MyWelcomeViewController alloc] initWithNibName:@"MyWelcomeViewController" bundle:nil];
navController = [[UINavigationController alloc] initWithRootViewController:welcomeViewController];
navController.navigationBarHidden = YES;
// Then we setup the reveal side view controller with the root view controller as the navigation controller
self.revealSideViewController = [[PPRevealSideViewController alloc] initWithRootViewController:navController];
[self.revealSideViewController setDirectionsToShowBounce:PPRevealSideDirectionNone];
[self.revealSideViewController setPanInteractionsWhenClosed:PPRevealSideInteractionContentView | PPRevealSideInteractionNavigationBar];
// Then we make the window root view controller the reveal side view controller
self.window.rootViewController = self.revealSideViewController;
ウェルカム ビュー コントローラーが表示されたら、ユーザーはログインします。ログインすると、App Delegate から次のプロセスが再び実行されます。
self.navController.navigationBarHidden = NO;
[self.navController setTitle:@"Home"];
[self.navController pushViewController:homeViewController animated:NO];
次に、カスタムセルがセットアップされたテーブルビューであるサイドビューコントローラーのセットアップがあります。
行が選択されたら、新しいルート コントローラーをナビゲーション コントローラーにプッシュする必要があります。選択したセルのテーブルビューで次を使用して、これを試します。
MyAccountViewController *accountViewController = [[MyAccountViewController alloc] init];
[self.navigationController setViewControllers:[NSArray arrayWithObject:accountViewController] animated:NO];
残念ながら、これは何もしません。コードを App Delegate に追加し、テーブル ビュー コントローラーからメソッドを呼び出すと、動作しますが、テーブル ビュー自体の .m ファイルからは動作しません。上記が実行されていることがわかるログを追加しても、何もしません。
上記で何か違うことをする必要があるかどうかはわかりません。たとえば、現在表示されているビューを完全にポップしてから、ナビゲーション コントローラーと PPRevealSideViewController をもう一度作成します。私が想定している場合、現在のすべてのビューをポップして、AppDelegate からではなく、新しいビューをウィンドウにプッシュする方法がわかりません。
アプリ デリゲートでこれを使用したくない理由は、これにアプローチする方法が正しくないためです。メニューからプッシュする新しいルート コントローラーごとに個別のメソッドが必要になるため、アプリ デリゲートは次のようになります。非常に大きい。