2014-02-11 19 views
0

我做了一個選項卡式應用使用故事板模板,兩個視圖控制器被嵌入。如何在使用storyboard時在其viewController的一個tabBarController中獲取?

這就是我想要做的:在第一個viewController中,讓TabBar以編程方式選擇第二個viewController。

第一個viewController是一個tableViewController,顯示一個項目列表,每個項目將推送到一個detailViewController。在detailViewController中,我編輯一些信息並保存該項目。然後我想讓應用程序顯示第二個ViewController,它是一個tableViewController顯示保存的項目。

通常,我們可以使用[TabBarController setSelectedIndex:1];來選擇第二個viewController。

但是,由於這是一個故事板模板應用程序,隱藏在後面的代碼太多了。所以我無法在第一個viewController中獲得TabBar實例,並且使用了setSelectedIndex方法的

這是混淆了我......

而現在,我已經找到了這個問題的解決方案。我的答案如下。

+0

你想說什麼......? –

+1

你在哪裏調用'self.tabBarController'? – KudoCC

+0

@Honghao Zhang - 如果你正在使用storyboard,那麼你不需要通過代碼維護viewcontroller heirarchy - 只要學習xcode提供的tabbar控制器模板代碼 - 你會明白這一點 –

回答

2

我已經想出瞭如何解決這個問題。

首先我添加一個新類:MyTabBarController

然後,在故事板,選擇標籤欄控制器,在身份檢查面板中,自定義類設置爲這個新類。

對於第一個的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,所以,在第一個控制器中,我可以撥打[tabBarController setSelectedIndex:1];

Storyb oard給了我一個可視界面,但是,它隱藏了很多背後的東西。

相關問題