0

这是按钮按下的代码:

- (IBAction)newPoint:(id)sender {
    [self.tabBarController setSelectedIndex:1];

    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"navid"];
    UIViewController *tblvc = [self.storyboard instantiateViewControllerWithIdentifier:@"tblid"];

    UINavigationController *nvc1 = self.tabBarController.viewControllers[1];
    [nvc1 pushViewController:tblvc animated:NO];
    [nvc1 pushViewController:vc animated:NO];
}

这是我的故事板 在此处输入图像描述

这是我得到的例外:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'

我想要实现的是在点击按钮时显示最右边的视图控制器(在情节提要中)。然后我希望导航控制器的后退按钮进入根视图控制器,就像我手动到达那个控制器一样。

为此,我更改为第二个选项卡(因为按钮位于第一个选项卡上),然后我尝试初始化导航控制器。但是我可能缺少一些东西......

4

1 回答 1

1

确保在故事板中正确的视图控制器上设置了故事板 ID。对我来说,它看起来像

UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"navid"];

或者

UIViewController *tblvc = [self.storyboard instantiateViewControllerWithIdentifier:@"tblid"];

正在创建 UINavigation 控制器的新实例。您可以使用以下方法确认这一点

    - (IBAction)newPoint:(id)sender {
        [self.tabBarController setSelectedIndex:1];

        UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"navid"];
        UIViewController *tblvc = [self.storyboard instantiateViewControllerWithIdentifier:@"tblid"];

        NSLog(@"vc - %@",NSStringFromClass([vc class]));
        NSLog(@"tblvc - %@",NSStringFromClass([tblvc class]));

        UINavigationController *nvc1 = self.tabBarController.viewControllers[1];
        [nvc1 pushViewController:tblvc animated:NO];
        [nvc1 pushViewController:vc animated:NO];
    }

然后在调试器中检查类名。UINavigationController(或子类)中的哪一个都是问题所在。

于 2013-04-11T20:20:56.160 回答