我想在Storyboards中设置递归表视图。通过递归,我的意思是你单击TableView中的一个项目,它会加载一个新的表视图实例,只显示新的数据。这样,我可以重用Table View Controller中包含的Table View Cells和逻辑。我的数据是数组数组的数组......
我能找到的唯一解决方法是设置一个导航控制器,将我的表视图控制器作为根视图控制器,然后按下我的表视图控制器的另一个实例。然后,第二个表视图控制器推送原始的表视图控制器,我有我的递归表视图控制器。我只是想消除表视图控制器的重复(即使它只有一次)。
由于
参考图片
答案 0 :(得分:4)
我也试图做这样的事情。我通过缩小到你的截图中的更高级别将Cell Prototype连接到segue,然后右键单击单元格并向下拖动到TableView中。这给了我通常的segue选项。
答案 1 :(得分:4)
如果展开Storyboard编辑器左侧的“文档大纲”视图,则可以控制 - 从表格单元格拖动到表格单元格所在的同一视图控制器。
答案 2 :(得分:2)
要做到这一点,你需要忘记故事板上指向自身的segue。只需使用didSelectRowAtIndexPath委托方法,操作您的数据,创建您的viewcontroller并推入表视图堆栈。使用prepareForSegue初始化您的下一个视图。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//initiate you new array
self.arrayForNewView = someArray;
//Now it's important that you give your table view controller in the identity inspector a Storyboard ID. In this case "MyGenericTableViewController"
UIViewController *myController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyGenericTableViewController"];
[self.navigationController pushViewController: myController animated:YES];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
//set data source next generic table view controller
MyGenericTableViewController *vc = [segue destinationViewController];
vc.dataSource = self.arrayForNewView;
}
答案 3 :(得分:1)
我没有看到为什么你不能设计故事板来使用相同的UITableViewController子类来递归使用的任何理由。只需设计故事板,然后使用prepareForSegue:方法将选择传递给控制器的下一个实例。
你试过这个没有成功吗?你遇到了什么问题?
答案 4 :(得分:0)
我有一个类似的情况,我问用户一堆 一个接一个的问题。我做的是放一个' Next'按键 在VC中有自己的动作,然后在该动作方法中实例化 相同的VC到下一个问题的详细信息。 当然第一个问题是VC本身,然后是每个连续的 问题是VC的另一个实例。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard_iPhone" bundle:nil];
QuestionTableViewController *nextVC = [storyboard instantiateViewControllerWithIdentifier:@"QuestionTableViewController"];
[self.navigationController pushViewController:nextVC animated:NO];
注意动画的NO。看起来放松会给你 如果你说是的问题。哈文还没想出那个。
我必须这样做,因为在我想做的问题结束时 unwindSegue,我不想在屏幕上使用超过1个按钮 回到最后。