[英]How to get visible viewController from app delegate when using storyboard?
[英]How to get tabBarController in one of its viewController when using storyboard?
我使用故事板模板制作選項卡式應用程序 ,嵌入了兩個視圖控制器。
這就是我想要做的: 在第一個viewController中,讓TabBar以編程方式選擇第二個viewController。
第一個viewController是一個tableViewController,顯示了一個項目列表,每個項目都將推送到detailViewController。 在detailViewController中,我編輯一些信息並保存項目。 然后我希望app顯示第二個ViewController,這是一個tableViewController顯示保存的項目。
通常,我們可以使用[TabBarController setSelectedIndex:1];
選擇第二個viewController。
但是,由於這是一個故事板模板應用程序,因此隱藏了許多代碼。 所以我無法在第一個viewController中獲取TabBar實例,並使用setSelectedIndex方法。
這讓我很困惑......
現在,我找到了解決這個問題的方法。 我的答案如下。
我已經想出如何解決這個問題。
首先,我添加一個新類: MyTabBarController 。
然后,在storyboard中 ,選擇標簽檢查器面板中的標簽欄控制器,將自定義類設置為此新類。
對於第一個viewController類,添加一個屬性
@property (nonatomic, weak) UITabBarController *tabBarController;
然后在MyTabBarController類中添加- (void)viewDidAppear:(BOOL)animated
:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UINavigationController *navigationController = [self.viewControllers objectAtIndex:0];
FirstViewController *firstViewController = (FirstViewController *)navigationController.topViewController;
firstViewController.tabBarController = self;
這樣,我將tabBarController實例傳遞給firstViewController,因此,在firstViewController中,我可以調用[tabBarController setSelectedIndex:1];
tabBarController [tabBarController setSelectedIndex:1];
故事板為我提供了一個可視化界面,然而,它隱藏了很多東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.