1

我正在使用Storyboard開發iOS 5應用程序。iOS - 轉到另一個選項卡的某個選項卡的第二個uiviewcontroller

我有UITabBarController它有3個選項卡。每個標籤都有自己的UINavigationController。第一個選項卡的UINavigationController具有一個UITableViewController其中塞格斯到另一個UIViewControllerUINavigationController第二選項卡的僅具有一個UIViewController

當第二個選項卡的UIViewController發生某些操作時,我想實現的目標是導航到UIViewController(第一個標籤的UINavigationController中的第二個視圖)。

我試圖實現這一點使用推賽格瑞但隨後的導航堆棧變爲與視圖不同的選項卡的控制器(在目的地視圖控制器點後退按鈕來查看其它選項卡的控制器)混合。

所以我想知道在不同標籤的視圖控制器之間完成這種轉換的「正確方法」是什麼。

任何幫助將不勝感激。

回答

0

您不能使用通知,因爲第一個選項卡的第一個viewController甚至可能不會被加載。

所以你可以做的一種方法是保存一個首選項(nsuserdefaults也許),然後切換到第一個選項卡,並在第一個選項卡的第一個viewController檢查此首選項viewDidAppear或viewWillAppear,如果它設置然後重置首選項(下次)並自動導航(推送)到第二個viewController。

BOOL shouldAutoPush=YES; 
[[NSUserDefaults standardUserDefaults] shouldAutoPush forKey:@"shouldAutoPush"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 
[self.tabBarController setSelectedIndex:0]; 

-(void)viewWillAppear:(BOOL)animated { 
    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"shouldAutoPush"]) { 
     BOOL shouldAutoPush=NO; 
     [[NSUserDefaults standardUserDefaults] shouldAutoPush forKey:@"shouldAutoPush"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
     [self.navigationController pushViewController:secondViewController animated:YES];     
    } 
} 
+0

太好了!它解決了我的問題,非常感謝!我還有一個問題。我應該如何使用這種方法在目標視圖控制器中設置一些數據。我的意見是,保存自定義對象的用戶默認不是一個好主意。或者我錯了? – damirstuhec

+0

如果您的數據有單獨的模型類,您可以在其中設置一個或多個屬性?或者如果一個簡單的應用程序,可能會將數據存儲在appDelegate中。實際上,您也可以將上述首選項存儲在其中任一個中以避免nsuserdefaults。 – ader

+0

好的。我可能會使用一些單例類來存儲我的自定義對象。感謝幫助! – damirstuhec

相關問題