0

我有一個「標籤欄控制器」應用程序的項目。第一個按鈕本質上是一個主屏幕。第二個顯示一個UITableView的內容。第三個按鈕顯示不同的UITableView等。如何從另一個UIViewController觸發一個UITabBarController的UIViewController?

從第一個視圖(主頁)中,我在頁面上有一個按鈕,它在功能上等同於選項卡控制器的第二個按鈕。這是到達該UITableView的替代路徑。我不想發送一個按鈕到AppDelegate的UITabBarController。

在HomeViewController的代碼,我想基本上是這樣的:

-(IBAction) touchInsideButton:(id)sender { 
    [self presentModalViewController: [appDelegate secondViewController] animated:YES]; 
} 

-(IBAction) touchInsideButton:(id)sender { 
    AppDelegate *appDelegate = (AppDelegate*) [[UIApplication sharedApplication] delegate]; 
    [appDelegate launchSecondViewController: self]; 
} 

其中, 「launchSecondViewController」 是(在兩行的取消註釋出一個)

-(void) launchSecondViewController: (id) sender { 
// [self.tabBarController presentModalViewController: secondViewController animated:YES]; 
// [self.tabBarController.navigationController pushViewController: secondViewController animated:YES]; 
} 

無論如何,所有三種方法給出了相同的錯誤:

2013-05-16 12:04:26.977 MyApp [55273:f803] *由於未捕獲的異常'NSInvalidArgumentException',終止應用程序,原因:'應用程序試圖以模態方式呈現活動控制器。 *第一擲調用堆棧:

回答

1

的問題是,第二個視圖控制器,其中你提到的secondViewController的這種情況下,已經在接口方面,作爲選項卡視圖控制器的一個孩子。你不能在那裏,目前或推動它。

manipulate a tab bar controller in code的設置方法是設置爲selectedViewController(或選定的索引)。嘗試這樣做。

+0

那太容易了!我一直在想這個問題,這應該是顯而易見的。我確實開始嘗試將我的「觸摸」事件轉發給該按鈕 - 再次KISS更好。 – mobibob

+0

這可能只是一個冷靜下來,深吸一口氣,並閱讀文檔的問題! – matt

+0

請不要* *您的*成功的代碼到*我的*答案。 – matt

相關問題