放松segue永远放松

时间:2014-08-05 13:36:00

标签: ios objective-c uistoryboardsegue

这是我的情况。

我有三个视图控制器,Root,Pushed和Leaf。

Root是堆栈中最低的。 "推"受到了推动。 "叶"被模态segue放在堆栈上。

Root有这些例程:

-(IBAction) specialSegue:(UIStoryboardSegue*)segue {
 // Do stuff.
}

-(void) viewWillAppear:(BOOL)animated {
}

来自" Leaf",我正在调用一个将触发" specialSegue"的展开segue。一切正常。

什么是完全奇怪的,是秒之前可以过去" viewWillAppear"被叫。我盯着屏幕,等着它放松。我知道" specialSegue"被叫,我的日志的b / c。它立即被调用。但实际的解散可能会发生得更晚。有时,如果我再次点击屏幕,在一个甚至不是按钮的地方,那么视图展开并且viewWillAppear会被击中。

我想是的。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

感谢jrturton和Bruno。我无法解释它,我保证如果我设置断点,调试器会说我从主线程调用“performSegue ...”。但如果我像这样打电话:

    dispatch_async(dispatch_get_main_queue(), ^{
        [self performSegueWithIdentifier:[self.segues objectAtIndex:row] sender:nil];
    });

效果很好。它看起来好像我在这里的主线程中,因此不需要上面的代码。但它确实解决了我的问题。所以我继续前进。