我有一个应用程序,可以在执行任务之前提示用户输入各种信息。在用户输入所有信息后,我会UIApplication.shared.openUrl(url: url)
然后self.navigationController?.popToRootViewController(animated: true)
。该应用程序弹出回根视图控制器;但是,最后一个视图控制器的导航项提示现在包含在根视图控制器的导航项中。
任何人都明白为什么会发生这种情况并找到解决问题的好办法?我可以在根视图控制器重新出现时将提示设置为""
,但我想解决问题,而不是缓解症状。
更新
根据@Shad的回答,我已经使用下面的代码更新了我的视图控制器,一切都按预期工作。
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationItem.prompt = nil
}
答案 0 :(得分:0)
原因是您的提示已添加到窗口,即使添加了提示的父视图控制器当前也不可见,也可见。如果您分享一些代码,我们可以继续详细说明。
但是有一种方法可以在返回RootViewController之前解除提示。
您可以使用-(void) viewWillDisappear:(BOOL)animated
关闭提示。只需在removeFromSuperview()
上调用-(void) viewWillDisappear:(BOOL)animated
,即可从父视图控制器中删除提示视图。假设你的提示是一个UIView。