タブバーコントローラーの現在表示されているナビゲーションコントローラーを取得する方法はありますか?
たとえば、プログラムには次のように2つのタブバー(それぞれ1つのナビゲーションコントローラー)があります。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
//Method is called when user clicks on a hyperlink in one of view controllers
NSDictionary *dict = [self parseQueryString:[url query]];
NSString *userID = [dict objectForKey:@"id"];
NSString *navconTitle = [dict objectForKey:@"navcon"];
//intention is to Push a view controller onto the CURRENT navigation stack
[navcon pushViewController:someViewController animated:YES];
}
}
return YES;
}
より多くのビューコントローラーをプッシュできるように、現在のナビゲーションコントローラーを決定する方法を誰かにアドバイスできますか?
UITabBarController
s selectedViewControllerプロパティを使用します。
navcon = (UINavigationController*)myTabBarController.selectedViewController;
[navcon pushViewController:someViewController animated:YES];
おもう UITabBarController selectedViewController
プロパティはあなたが探しているものでなければなりません。
したがって、UITabBarControllerメソッドから:-
[self.selectedViewController pushViewController:someViewController animated:YES];
Swiftバージョン、誰かがObjective-Cを読み取れない場合に備えて、どこからでもtabBarを見つける方法の追加ソリューション。これを使用して、通知を処理するときに画面にプッシュします。
guard let tabBarVC = UIApplication.shared.keyWindow?.rootViewController as? UITabBarController else { return }
if let currentNavController = tabBarVC.selectedViewController as? UINavigationController {
currentNavController.pushViewController(someVC, animated: true)
}