我有一个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]);
}
有谁知道为什么会这样?感谢
答案 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。