停止从导航控制器快速导航
Posted
技术标签:
【中文标题】停止从导航控制器快速导航【英文标题】:Stop navigation from navigation controller swift 【发布时间】:2016-01-25 07:15:44 【问题描述】:我有一个登录页面的导航控制器,登录成功后,我想关闭导航,这意味着一旦登录成功,用户就不允许返回登录页面。我试图创建另一个故事板并执行 segue,但导航栏仍然存在,无论如何以编程方式或从故事板中关闭导航栏?
我不希望“配对”按钮出现在此页面上。
【问题讨论】:
如果您想禁用后退导航,请不要在现有导航控制器上显示新的视图控制器或将其显示为根控制器,否则您不仅需要处理标准的后退按钮而且还带有边缘手势。更不用说它会让用户感到困惑。\ 如果我不提供新的视图控制器,那么我在现有的视图控制器之上应用另一个 UIView 并一直为我的应用程序堆栈? 那么导航控制器的用途就不清楚了。在不再需要的阶段用普通的 UIViewController 替换它。 【参考方案1】:我找到了解决办法!
我在 ios 11 和 iOS 13 上对其进行了测试,它运行良好 :)
protocol CustomNavigationViewControllerDelegate
func shouldPop() -> Bool
class CustomNavigationViewController: UINavigationController, UINavigationBarDelegate
var backDelegate: CustomNavigationViewControllerDelegate?
func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool
return backDelegate?.shouldPop() ?? true
class SecondViewController: UIViewController, CustomNavigationViewControllerDelegate
override func viewDidLoad()
super.viewDidLoad()
(self.navigationController as? CustomNavigationViewController)?.backDelegate = self
func shouldPop() -> Bool
if (needToShowAlert)
showExitAlert()
return false
else
return true
【讨论】:
【参考方案2】:从登录页面转到导航控制器,而不是从导航控制器转到登录页面。
【讨论】:
以上是关于停止从导航控制器快速导航的主要内容,如果未能解决你的问题,请参考以下文章