查看当前视图UItableView

时间:2012-11-24 07:22:54

标签: ios uitableview segue

我的tableview中有一个未定义的级别(深度),所以我希望能够在视图和它自身之间创建一个segue,这样我就可以调用它,只要我有子级别来发现。我怎么能这样做?

我想在我需要时直接使用[self.navigationView pushViewController],但我希望新控制器在我的SB中使用定义的视图。

谢谢,

编辑:目前我发现的唯一解决方案是复制VC,在VC1和VC2之间设置一个名为'showNext'的segue,以及VC1和VC2之间的segue以相同的方式调用。是不是有更好的解决方案?

2 个答案:

答案 0 :(得分:19)

如果你正在使用动态单元原型,你显然可以从表格视图单元格到控制器做一个没有任何问题的segue。

make segue from cell to controller

当你制作segue时,你最终得到:

circular segue

但让我们想象一下,有一些原因对你不起作用,例如:您不能从单元格中获得segue(例如,您需要从didSelectRowAtIndexPath调用segue,而不是选择单元格)。在这种情况下,您无法使用以前的技术。

在这种情况下有几种选择:

  1. 作为pointed out by Chris,如果只支持iOS 6及更高版本,请使用上述技巧,但(a)确保didSelectRowAtIndexPath使用self sender然后让shouldPerformSegueWithIdentifier只允许segue sender == self(因此当sender是表格视图单元格时,它将被取消);

  2. 也许更容易,只是不要定义一个segue并手动didSelectRowAtIndexPath手动instantiateViewControllerWithIdentifier,然后根据需要推送/显示该视图控制器;或

  3. 您可以使用以下方法,kludgy解决方法:简而言之,向视图控制器添加一个按钮(将其向下拖动到底部的栏),它将不会显示在视图上,但你可以使用它的segues。首先,将圆角按钮拖动到场景底部的控制器栏:

    drag button

    现在,您可以从该按钮向视图控制器创建一个segue:

    make segue from hidden button

    因此,你最终再次得到了自我引用的信息:

    final button segue

    您必须为该segue指定一个标识符,因此您可以通过performSegueWithIdentifier以编程方式调用它,但它可以正常工作。不是最优雅的解决方案,但我认为这比在故事板上增加一个场景更好。

  4. 这些都不是理想的,但你有很多选择。

答案 1 :(得分:0)

这个过程让我做同样的事情......

像往常一样在故事板中设置您的tableview。不要给原型单元格提供单元标识符。通过从单元格拖动到控制器,如上所述设置segue。

在viewDidLoad中注册单元格类

//register the cell identifier as we are not loading form a storybard
[_aTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"CellID"];

在您的cellForRowAtIndexPath中设置您的单元格

static NSString *CellIdentifier = @"CellID";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

现在您可以使用didSelectRowAtIndexPath并调用performSegueWithIdentifier。 prepareForSegue只会被调用一次。