我有一個「標籤欄控制器」應用程序的項目。第一個按鈕本質上是一個主屏幕。第二個顯示一個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',終止應用程序,原因:'應用程序試圖以模態方式呈現活動控制器。 *第一擲調用堆棧:
那太容易了!我一直在想這個問題,這應該是顯而易見的。我確實開始嘗試將我的「觸摸」事件轉發給該按鈕 - 再次KISS更好。 – mobibob
這可能只是一個冷靜下來,深吸一口氣,並閱讀文檔的問題! – matt
請不要* *您的*成功的代碼到*我的*答案。 – matt