2

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

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

谢谢,

编辑:目前我发现的唯一解决方案是复制 VC,在 VC1 和 VC2 之间设置一个名为“showNext”的 segue,在 VC1 和 VC2 之间设置一个名为“showNext”的 segue。没有更好的解决方案吗?

4

2 回答 2

19

如果您使用的是动态单元格原型,您显然可以毫无问题地从表格视图单元格转到控制器。

从单元到控制器进行segue

当您进行转场时,您最终会得到:

循环转场

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

在这种情况下有几个选项:

  1. 正如Chris 所指出的,如果只支持iOS 6 及更高版本,请didSelectRowAtIndexPath使用上述技术,但是 (a) 确保您self对被取消);sendershouldPerformSegueWithIdentifiersender == selfsender

  2. 也许更简单,只是根本不定义 segue 并didSelectRowAtIndexPath手动instantiateViewControllerWithIdentifier进行,然后酌情推送/呈现该视图控制器;或者

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

    拖动按钮

    现在您可以从该按钮到您的视图控制器进行转场:

    从隐藏按钮进行segue

    因此,您最终会再次出现自引用序列:

    最终按钮转场

    您必须为该 segue 提供一个标识符,以便您可以通过 以编程方式调用它performSegueWithIdentifier,但它可以工作。不是最优雅的解决方案,但我认为这比在故事板上添加一个额外的场景要好。

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

于 2012-11-24T16:37:27.037 回答
0

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

像往常一样在情节提要中设置您的表格视图。不要给你的原型细胞一个细胞标识符。通过从单元格拖动到控制器,像上面一样设置你的 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 只会被调用一次。

于 2013-09-25T17:59:25.663 回答