2016-09-14 95 views
0

我有 获取导航控制器上显示的按钮时出现问题。我研究了这一点,我认为它与导航工作方式有关。从堆栈中推出并弹出。如何找出属于当前viewController的导航控制器?

这是我有:

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

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

后退按钮在导航控制器中的所有视图中都很好显示,但从第二层segue中调用的视图除外。

据我所知,通过阅读关于这个主题的其他文章,这是因为一个新的导航控制器是在第二级赛格上创建的。

我很好,因为一切工作正常,但我需要按钮来显示第二个navcontroller。

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

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) 
} 

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

该项目是利用斯威夫特3和Xcode的8

回答

2

使用

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解释。

+0

我没有尝试过,但都没有工作。有趣的是,rightBarButtonItem正在显示。 –

+0

克里,你有正确的答案,所以像我这样的其他一些骨头不会忽略这个我拼错的图像名称。谢谢您的帮助。 –

相关问题