代码之家  ›  专栏  ›  技术社区  ›  ludvigeriksson

后退按钮隐藏在导航栏中(但仍有效)

  •  2
  • ludvigeriksson  · 技术社区  · 9 年前

    我读过类似的问题,其中问题是由多个导航控制器引起的,但我只有一个。这是我的导航流程。

    VC=UIViewController,NC=UINavigationController

    VC1-模态->NC-根->VC2-显示->VC3型

    VC1型 不是 嵌入的 在导航控制器中,我使用 performSegueWithIdentifier:发件人: .

    VC2型 然后使用 show 从现在开始 VC3型 ,这是后退按钮不可见的位置。但它仍然有效。但是,它 如果我退出主屏幕,然后再次进入应用程序,将显示,如下所示:

    https://gfycat.com/VelvetyThisHamster .

    你知道为什么会这样吗?

    编辑:为了让事情清楚:我希望按钮既可见又可用(问题不是它在工作,而是它被隐藏了)

    编辑2:

    如果我将导航流更改为

    NC-根->VC2-显示->VC3型

    则返回按钮按预期工作。所以问题是,如何在第一个导航控制器之前添加没有导航控制器的常规视图控制器?我以前想要它,因为VC1不应该有导航栏,VC2应该以模式显示。

    3 回复  |  直到 9 年前
        1
  •  2
  •   Anbu.Karthik    9 年前

    试试这个

    隐藏的

    override func viewWillAppear(animated: Bool)
    {
    super.viewWillAppear(animated)
    
     //use this
    self.navigationItem.setHidesBackButton(true, animated: false)
    //else use this
    
     self.navigationItem.leftBarButtonItem = nil
    
    
    }
    

    显示

    override func viewWillAppear(animated: Bool)
    {
    super.viewWillAppear(animated)
    
     //use this
    self.navigationItem.setHidesBackButton(false, animated: false)
     //else
     self.navigationController.navigationItem.backBarButtonItem.enabled = TRUE
    
    }
    

    使现代化

      override func viewWillAppear(animated: Bool)
    {
    super.viewWillAppear(animated)
    
     //use this
    self.navigationItem.setHidesBackButton(false, animated: false)
     //else
       let backButton  = UIBarButtonItem(title: "leftbutton", style: UIBarButtonItemStyle.Plain, target: self, action: "buttonMethod")
    
      self.navigationItem.leftBarButtonItem = backButton
    
    }
    
    
    
     func buttonMethod() {
        print("Perform action")
    }
    
        2
  •  1
  •   ludvigeriksson    9 年前

    我想我找到了问题的根源,所以我会在这里发布,以防其他人遇到同样的问题。

    VC1和NC之间的模式表示是从后台队列(通过调用 performSegueWithIdentifier:sender: 准确地说,在NSURLSessionDataTask的完成处理程序中)。通过将这行代码发送到主队列,问题似乎消失了。

        3
  •  1
  •   Kashif Richard Brightwell    8 年前

    结果,我将NavigationBar色调设置为“Clear”。我一改,后退按钮就出现了。