故事板iOS 4.2中的递归表视图

时间:2011-10-19 17:29:54

标签: ios uinavigationcontroller uitableview storyboard

我想在Storyboards中设置递归表视图。通过递归,我的意思是你单击TableView中的一个项目,它会加载一个新的表视图实例,只显示新的数据。这样,我可以重用Table View Controller中包含的Table View Cells和逻辑。我的数据是数组数组的数组......

我能找到的唯一解决方法是设置一个导航控制器,将我的表视图控制器作为根视图控制器,然后按下我的表视图控制器的另一个实例。然后,第二个表视图控制器推送原始的表视图控制器,我有我的递归表视图控制器。我只是想消除表视图控制器的重复(即使它只有一次)。

由于

参考图片 enter image description here

5 个答案:

答案 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个按钮 回到最后。