在TabViewController中没有调用prepareForSegue

时间:2014-05-09 18:56:56

标签: ios objective-c storyboard

我有一个UITabViewController,负责管理多个视图(和导航控制器)。通过按住Ctrl键单击UITabViewController并选择" relationship segue"将视图连接到Storyboard中。对其他观点。

问题是,在UITabViewController中,prepareForSegue根本没有触发。代码中没有其他任何内容。通过单击选项卡栏切换视图时不会输出NSLog。

CustomTabViewController.m

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.

    NSLog(@"Here..");
    NSLog(@"%@", [segue destinationViewController]);
}

有谁知道为什么会这样?感谢

3 个答案:

答案 0 :(得分:13)

假设您的意思是UITabBarController而不是UITabViewController,点击UITabBarItem切换视图将不会触发prepareForSegue:sender:。但是,它会导致tabBarController:didSelectViewController:中的UITabBarControllerDelegate触发,因此您可以使用它来执行您希望在prepareForSegue:sender:中执行的任何操作。如果您想引用您导航到的视图控制器,而不是[segue destinationViewController],则可以直接引用viewController参数。

答案 1 :(得分:2)

选项卡栏控制器(UITabBarController对象)不会转到其选项卡中包含的视图控制器。

据我所知,没有UITabViewController这样的东西。发布问题时使用正确的类名是值得的。起初我误解了你的问题,并认为它说'#34; UITableViewController"。(看来@MatteoGobbi也是如此)

答案 2 :(得分:0)

如果您想要在用户点击该单元格时想要这样做,则会打开一个新的viewController,您必须连接到故事板viewController中的新UITableViewCell,而不是UITableViewController

在您的情况下,您应该从performSegue方法手动启动didSelectRowAtIndexPath,因为您可能已连接到UITableViewController的故事板。

修改

我现在读到你的意思UITabViewController所以我在下面评论过:

在这种情况下,没有segue..a UITabViewController初始化了一组Controller ..所以当你点击标签时,不会调用segue。