如何从另一个UIViewController触发UITabBarController的一个UIViewController?

时间:2013-05-16 17:09:12

标签: uitabbarcontroller presentmodalviewcontroller pushviewcontroller

我有一个项目是“标签栏控制器”应用程序。第一个按钮基本上是主屏幕。第二个显示内容的UITableView。第三个按钮显示不同的UITableView等。

从第一个视图(Home),我在页面上有一个按钮,功能上与标签控制器的第二个按钮相同。它是到达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 个答案:

答案 0 :(得分:1)

问题是第二个视图控制器的这个实例(您称为secondViewController)已作为选项卡视图控制器的子项存在于接口中。你不能在那里,出现或推动它。

manipulate a tab bar controller in code的方式是设置为selectedViewController(或选定的索引)。试着这样做。