【发布时间】:2014-08-05 13:36:00
【问题描述】:
这是我的情况。
我有三个视图控制器,Root、Pushed 和 Leaf。
根是堆栈中最低的。 “Pushed”被 push segue 推动了。 "Leaf" 被模态 segue 放入堆栈。
Root 有这些例程:
-(IBAction) specialSegue:(UIStoryboardSegue*)segue {
// Do stuff.
}
-(void) viewWillAppear:(BOOL)animated {
}
从“Leaf”开始,我调用了一个会触发“specialSegue”的展开转场。这一切都有效。
完全奇怪的是,在“viewWillAppear”被调用之前可以经过几秒钟。我盯着屏幕,等待它放松。我知道我的日志中调用了“specialSegue”。它会立即被调用。但实际的平仓可能会在很久以后发生。有时,如果我再次点击屏幕,在一个甚至不是按钮的地方,视图就会展开并且 viewWillAppear 会被击中。
我想就是这样。非常感谢您对此提供任何帮助。
【问题讨论】:
-
你如何称呼放松转场?当您从非主线程调用 UIKit 方法时,通常会发生 UI 执行的奇怪延迟。
-
展开转场被称为按钮按下的直接响应。所以这个动作发生在主线程中。
-
@jrturton 打败了我。检查您的线程/GDC 代码,这类问题通常是由该错误产生的。
-
好的,specialSegue 中发生了什么?在等待转换发生时暂停应用会发生什么 - 回溯是什么样的?
-
什么也没发生。我正在设置一个 NSString 属性。它做得很好,segue 处理结束了。然后我一直等到最后,“viewWillAppear”调用被击中。
标签: ios objective-c uistoryboardsegue