【发布时间】:2015-01-13 10:52:19
【问题描述】:
在 iOS 7.1 而不是 8.x 下发生的非常奇怪的问题。
我有一个视图控制器,它使用容器连接到第二个视图控制器。该容器有一个嵌入到 tableviewcontroller 的 segue。
VC1 在prepareForSegue 中执行以下操作
self.popController = [(UIStoryboardPopoverSegue *)segue popoverController];
MyChannelUpdateContainVC *myChannelUpdateVC = (MyChannelUpdateContainVC *)self.popController.contentViewController;
myChannelUpdateVC._delegate = self;
myChannelUpdateVC.isNewChannel = YES;
带有容器视图的 VC2 在prepareForSegue 中执行以下操作。这是一个嵌入式转场。
MyChannelUpdateTVC *vc = [segue destinationViewController];
vc.isNewChannel = self.isNewChannel;
vc.channelIDStr = self.channelIDStr;
vc.channelNameStr = self.channelNameStr;
问题在于,仅在 iOS7 下,最终的 tableviewcontroller 没有接收到这些变量。我在 VC2 中放置了显示变量的断点,在执行 prepareForSegue 时没有设置。但是,在 iOS 8.x 下运行,我发现它们设置在同一个断点处。
我可以在两个 iOS 版本中看到,VC2(嵌入式 segue)中的 prepareForSegue 实际上是在 viewDidLoad 之前执行的来自上一个 segue 的变量。如何在 iOS 7 下解决此问题?
更新:更加陌生----
逐步完成以下操作:
1/ 在 VC1 中执行如下:self.popController = [(UIStoryboardPopoverSegue *)segue popoverController];
2/ 然后它并没有执行它下面的其他代码,而是立即转到 VC2 并开始执行该 VC 的preapreForSegue
3/ 然后返回步骤 1 完成这些命令。
那么为什么在 iOS7.1 中它在完成 VC1 的 prepareForSegue?!? 中的命令之前执行第二个 VC?!?
【问题讨论】:
标签: ios objective-c uiviewcontroller segue