【问题标题】:How do I find out the navigation controller that is part of the current viewController?如何找出属于当前 viewController 的导航控制器?
【发布时间】:2016-09-14 19:26:28
【问题描述】:

我有 在导航控制器上显示按钮时出现问题。我对此进行了研究,我认为这与导航的工作方式有关。从堆栈中推送和弹出。

这是我所拥有的:

我将初始视图作为导航控制器。此控制器调用多个视图,但我遇到问题的视图是 UICollectionViewController。这是通过单击连接到 navigationController 的第一个 viewController 的按钮调用的。然后我有一个从 UICollectionViewCell 到新 ViewController 的 segue 设置。所以我假设这是一个二级 NavigationController。

其次,我有一个后退按钮图像显示在我的导航上,而不是文本

除了从第二级 segue 调用的视图之外,所有视图的导航控制器中的后退按钮都可以正常显示。

据我阅读有关该主题的其他帖子了解,这是因为在第二级 segue 上创建了一个新的导航控制器。

我很好,因为一切正常,但我需要在第二个导航控制器上显示按钮。

我试图以编程方式将按钮添加到与当前视图关联的导航控制器。我正在使用此代码:

override func viewDidLoad() {
    super.viewDidLoad()
    var image = UIImage(named: "NavLogo")
    var back_image = UIImage(named: "BackButton")
    image = image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
    back_image = back_image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)


    self.navigationController?.navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.plain, target: nil, action: nil)

    self.navigationController?.navigationItem.leftBarButtonItem = UIBarButtonItem(image: back_image, style: UIBarButtonItemStyle.plain, target: nil, action: nil)
 }

此代码似乎没有将按钮添加到当前导航控制器。

这个项目使用的是 Swift 3 和 Xcode 8

【问题讨论】:

    标签: ios uicollectionview swift3 navigationcontroller


    【解决方案1】:

    使用

    self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.plain, target: nil, action: nil)
    

    而不是

    self.navigationController?.navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.plain, target: nil, action: nil)
    

    这个link解释了这个原因。

    【讨论】:

    • 我没有先尝试过,但都没有成功。有趣的是 rightBarButtonItem 正在显示。
    • 克里,你有正确的答案,但是像我这样的其他傻瓜不会忽视这一点,我拼错了图像名称。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2021-03-17
    • 2014-07-16
    • 1970-01-01
    相关资源
    最近更新 更多