prepareForSegue未在嵌入式segue中调用

时间:2013-12-07 14:37:30

标签: ios objective-c uitableview uiviewcontroller uistoryboardsegue

我在视图控制器的容器中嵌入了一个表视图控制器。

在视图和表视图中,控制器prepareForSegue方法我把NSLog(@“控制器名称”) 我看到了视图控制器的日志,但没有看到表视图控制器。我不应该看到我的表视图的prepareForSegue的nslog?

enter image description here

4 个答案:

答案 0 :(得分:15)

正如 - 正如Greg解释的那样,嵌入类型的segue是

仅在设置期间调用!

这非常令人困惑。你可以这么说

" prepareForSegue"是一个非常糟糕的名字!

名称"准备segue"只有在你真正" segueing"从一个场景到另一个场景

在iOS应用中,容器视图很常见,你可以在任何地方看到它们,而你很少使用实际的#34;场景segue"。

真的," prepareForSegue"应该被称为:

  

"嘿,我们正在设置您的所有容器视图 - 您现在可以获取所需的任何信息!哦,如果你碰巧做了一个场景,你也可以使用它!"

怎么样:

containerViewBeingSetUpOhAndAlsoPrepareForSegueIfYouHappenToBeDoingThat:

这有点长,但更清楚!

这只是关于iOS的一些奇怪的事情,你必须知道,但从未在任何地方解释过。

以下是为初学者使用容器视图的完整说明https://stackoverflow.com/a/23403979/294884

答案 1 :(得分:1)

在您的日志框架视图中,在initWithCoder之后将直接调用prepareForSegue:准备TableViewController。我无法在表视图控制器和另一个视图(右侧视图)之间看到您的连接,但我相信当您点击该行时将会调用它。

// EXTENDED

另一件事可能是您没有在视图层次结构上添加UINavigationController,并且您将segue样式设置为“push”。尝试在属性检查器中将segue的样式更改为“模态”。 希望这有帮助。

答案 2 :(得分:0)

我花了一些时间阅读关于所有这些的长篇答案。这是简短的回答:

IB中没有为包含设置调用{p> prepareForSegue:包含的视图控制器将添加为子视图控制器。您只需在self.childViewControllers中查找所需的视图控制器。

答案 3 :(得分:0)

除了已经讨论的内容之外,您还应确保在接下来的委托调用中不要忽略segue标识符。

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender