根视图控制器上显示的后退按钮

Posted

技术标签:

【中文标题】根视图控制器上显示的后退按钮【英文标题】:Back button showing on root view controller 【发布时间】:2016-10-26 13:34:54 【问题描述】:

在我的应用程序中,我有一个导航控制器。除了我在根视图中不断收到一个不需要的后退按钮之外,一切似乎都运行良好。例如

这是在不选择任何选项的情况下的显示方式(必须始终如此)

这是我选择一个选项并返回后的样子

我怎样才能摆脱后退按钮(仅在下面显示的根视图控制器上)?

【问题讨论】:

纯故事板转场(展示) 您似乎没有在选项屏幕中使用 popViewController,但您再次推送到此根 viewController。我想您的导航堆栈实际上是:rootviewController -> Collection/pull -> rootViewController(另一个实例)。 developer.apple.com/library/content/referencelibrary/… 看看这个。 检查我更新的答案。谢谢 您的导航层次结构中的某些东西严重混乱,您能否发布一些关于您的例如故事板,也许? 【参考方案1】:

您正在从其他控制器推送您的 RootController,这就是您获得此后退按钮的原因。

有两种方法可以删除此按钮。当您返回 RootView 时始终 POP 或隐藏 RootView 上的后退按钮。

要隐藏后退按钮,请使用以下代码:

self.navigationController.navigationItem.hidesBackButton = true;

弹出:

[self.navigationController popViewControllerAnimated:true];// If you have pushed from RootView controller

[self.navigationController popToViewController:YourRootViewController animated:true]; // To travel back to RootView controller from any Controller

希望对你有所帮助;

【讨论】:

【参考方案2】:

只需在特定视图控制器中隐藏您的后退按钮(在您的情况下为您的根视图控制器)。将此代码添加到您的 viewDidLoad() 方法中:

let backButton = UIBarButtonItem(title: "", style: .plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton

【讨论】:

不客气,前几天也遇到了同样的问题。如果您可以将此答案标记为正确,它将帮助其他人节省时间。谢谢 有空会做 看起来像个黑客 您是否测试过按到空白处?有什么事吗? 是的,测试过,没有发生任何事情@Hoa【参考方案3】:

试试这个代码。

   override func viewDidLoad() 
   super.viewDidLoad()
   self.navigationItem.setHidesBackButton(true, animated:true)

要返回主 VC 或根 VC:

  func backToMain() 
 // If you want to go back to the previous view controller
  navigationController?.popViewControllerAnimated(true)

 //If you want to go back to the root view controller
 navigationController?.popToRootViewControllerAnimated(true)
   

【讨论】:

【参考方案4】:

你这行代码,

override func viewWillAppear(animated: Bool) 
    self.navigationController?.navigationBarHidden = true

【讨论】:

以上是关于根视图控制器上显示的后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

带有自定义后退按钮的滑动手势冻结根视图控制器

视图控制器上的 Xcode / Swift 后退按钮

如何在第二个视图控制器上显示核心数据?

按下视图控制器后删除“返回”按钮

如何在后退按钮上重新加载上一个视图控制器?

如何在标签栏视图控制器中显示后退按钮?