【发布时间】:2018-06-19 17:54:01
【问题描述】:
Swift 4、XCode 9.4
我无法在 UIAlertController 完成(或什至接近)时弹回堆栈的根。
要求是向用户显示确认,然后直接转换回“主页”页面。当我尝试时,我总是得到类似的东西:
popToViewController:transition:在发生现有转换或演示时在
<UINavigationController 0x7fc4fe85f000>上调用;导航堆栈不会更新。
我理解我想的概念。 UIAlertController 处于控制状态,或者导航控制器的控制能力不足,无法弹回。好的,因为我正在完成,所以有些道理。但是我不知道如何在不进入的情况下触发我的过渡。
@IBAction func doneAction(_ sender: Any) {
if verifyDoneProperly() {
let alert = UIAlertController(title: "Complete", message: "Good Job", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil))
self.present(alert, animated: true, completion: {
if let nav = self.navigationController {
nav.popToViewController(select, animated: true)
}
})
}
}
FWIW,当我指定视图控制器时它也不起作用。
我已经仔细阅读了this answer,但没有什么能真正帮助我(AFAIK)。
我真正能想到的唯一事情就是向根控制器发送一条消息,并让它在转换回来后显示警报(也许检查viewWillAppear 中的标志)
肯定有正确的方法来做到这一点。任何人都可以提出一些建议吗?
重要提示:虽然我有故事板,但我不能在这里使用 segues。向“worker”视图控制器的转换以编程方式完成,并根据当前状态进行选择。
【问题讨论】:
标签: ios swift xcode uinavigationcontroller