基本上我想要做的是将UIView包含在storyboard上的多个UIViewControllers中。我可以包含uiview,但UIView中的segues不起作用。
我有一个这样的故事板:
我有一个带有2个UIViewControllers First
和Second
的标签控制器。我有一个单独的UITableViewController与另外两个UIViewControllers A
和B
,与segues连接。
我可以将表格视图添加到First
和Second
视图作为子视图,但是当我点击单元格时,它不会转到下一个屏幕A
或B
。我有点弄明白为什么它不起作用,但却无法找到实现这一目标的最佳方法。
有什么好办法吗?我是故事板的新手,但一段时间以来一直在开发iOS应用程序。
修改
我将tableViewController添加到每个View的方式如下:
self.tableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"theTableViewController"];
[self.view addSubview:_tableViewController.tableView];
当点击表视图中的单元格时,prepareTse:segue:sender被调用,但没有推送到导航控制器,因为表视图控制器在每个视图控制器中只是一个子视图
EDIT2:
我发布了我的测试项目here
答案 0 :(得分:1)
您可以尝试两种方法。
1.直接在tableview单元格和下一个视图控制器之间创建一个segue。我想强调的是,除非尝试下面的方法,否则不要在tableview或view与下一个视图控制器之间创建segue。
2.将此代码添加到您的tableview控制器:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath row]) {
[self performSegueWithIdentifier:@"segueToB" sender:self];
}else {
[self performSegueWithIdentifier:@"segueToA" sender:self];
}
}
答案 1 :(得分:0)
我终于想出了如何在子视图中制作segue。实际上非常简单。看来我需要将视图控制器作为“childViewControllers”
添加到主视图控制器中而不是
self.tableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"theTableViewController"];
我确实喜欢这个:
[self addChildViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"theTableViewController"];
[self.view addSubview:_tableViewController.tableView];
和childViewController中的segue按预期工作。谢谢你们的帮助。