我尝试在加载后以编程方式从一个 View 执行到另一个 View (服务器发送命令以继续),但它不会发生,因为“其 View 不在 View 层次结构中”。关于如何解决它有什么想法吗?
附注我不从 viewDidLoad() 方法执行任何转场,所有这些转场都是从一个方法执行的,该方法也从此类中的另一个方法调用(该方法读取从服务器发送的字典)。我也尝试像这样执行segues
dispatch_async(dispatch_get_main_queue(), {
self.performSegueWithIdentifier("seg_wait_ready", sender: self)
})
就像这样(尽管我知道这是错误的):
performSegueWithIdentifier("seg_wait_ready", sender: self)
这些都不起作用,我仍然收到相同的警告。
最佳答案
我通过更改应用程序更改 VC 的逻辑解决了这个问题。现在,我直接通过委托(delegate)执行以下操作(大致):
delegate.window!.rootViewController=destinationViewController
它花费了我所有的系统转换动画,但无论如何我喜欢做自定义动画。但请记住将其保留在主队列中。为了安全起见,将其手动放入主队列中,如下所示:
dispatch_async(dispatch_get_main_queue(), {delegate.window! ... })
关于ios - Segue 上的 "whose view is not in view hierarchy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34317721/