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