我在一个视图控制器的容器中嵌入了一个表格视图控制器。
在视图控制器和表格视图控制器的prepareForSegue方法中,我都放了NSLog(@"name of the controller")。我可以看到视图控制器的日志,但是看不到表格视图控制器的日志。难道我也应该看到我的表格视图的prepareForSegue的nslog吗?
我在一个视图控制器的容器中嵌入了一个表格视图控制器。
在视图控制器和表格视图控制器的prepareForSegue方法中,我都放了NSLog(@"name of the controller")。我可以看到视图控制器的日志,但是看不到表格视图控制器的日志。难道我也应该看到我的表格视图的prepareForSegue的nslog吗?
确切地说,如Greg所解释的那样,embed类型的segue仅在设置期间才会被调用!
这非常令人困惑。你可以说,
只有在你实际上从一个场景跳转到另一个场景的情况下,名称“prepare for segue”才有意义(很少出现)。
因此,“prepareForSegue”应该被称为:
"嘿,我们正在设置您所有的容器视图 - 您可以在此时获取任何您需要的信息!哦,如果您碰巧正在进行场景跳转,您也可以使用它!"
那么:
containerViewBeingSetUpOhAndAlsoPrepareForSegueIfYouHappenToBeDoingThat:
这个有点长,但更清晰!
这只是iOS中你必须知道但是从未在任何地方解释的奇怪事情之一。
这里有一个针对初学者的关于使用容器视图的完整解释https://dev59.com/KGAg5IYBdhLWcg3wm7_6#23403979
除了已经讨论的内容之外,您还应确保在以下委托调用中不忽略segue标识符。
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender