所以我的设置非常简单,我有:
控制器A控制器B
控制器A的段连接到控制器B,这是一个模式显示。
当控制器B的viewDidLoad触发时,我用request实例化NSURLConnection并立即启动。
如果没有网络连接,那么didFailWithError就会被触发。
在这里,我调用dismissViewController,但当我这样做时,我会收到:
“正在进行演示或取消操作时,尝试从视图控制器中取消!”
导致此错误的可能原因是什么?
我在控制器B上也有一个按钮,当被点击时,它也会执行dismissViewController,但它是正确的。
这会不会是一种竞争情况,一旦控制器B命中viewDidLoad,它还没有完成动画/显示,而URL连接产生并立即失败?
如果是这样的话,解决这个问题的正确方法是什么?
谢谢。
发布于 2014-05-19 06:00:25
在视图控制器完全呈现之前,您不能忽略它。如果你还在使用viewDidLoad,情况肯定不会是这样,我认为在viewWillAppear中也不会是这样。viewDidAppear是最早的状态,你可以保证视图控制器的表示是完整的,并且准备好被解除。
话虽如此..。从UI的角度来看,最好是尝试在后台启动NSURLConnection,如果您有一个良好的网络连接,那么您将呈现视图控制器B,如果没有,则干脆永远不呈现它,而不是呈现并立即关闭。
发布于 2014-05-19 08:21:41
看起来像是竞争状态。您可以尝试在failToLoad委托中执行此操作并查看吗?
//Goes into the failed delegate
dispatch_async(dispatch_get_main_queue(), ^{
//dismiss the View Controller here??
});https://stackoverflow.com/questions/23727268
复制相似问题