这是我的情况。
我有三个视图控制器,Root,Pushed和Leaf。
Root是堆栈中最低的。 "推"受到了推动。 "叶"被模态segue放在堆栈上。
Root有这些例程:
-(IBAction) specialSegue:(UIStoryboardSegue*)segue {
// Do stuff.
}
-(void) viewWillAppear:(BOOL)animated {
}
来自" Leaf",我正在调用一个将触发" specialSegue"的展开segue。一切正常。
什么是完全奇怪的,是秒之前可以过去" viewWillAppear"被叫。我盯着屏幕,等着它放松。我知道" specialSegue"被叫,我的日志的b / c。它立即被调用。但实际的解散可能会发生得更晚。有时,如果我再次点击屏幕,在一个甚至不是按钮的地方,那么视图展开并且viewWillAppear会被击中。
我想是的。非常感谢任何帮助。
答案 0 :(得分:2)
感谢jrturton和Bruno。我无法解释它,我保证如果我设置断点,调试器会说我从主线程调用“performSegue ...”。但如果我像这样打电话:
dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:[self.segues objectAtIndex:row] sender:nil];
});
效果很好。它看起来好像我在这里的主线程中,因此不需要上面的代码。但它确实解决了我的问题。所以我继续前进。