我有 在导航控制器上显示按钮时出现问题。我研究了这个,我认为它与导航的工作方式有关。从堆栈中推出并弹出。
这就是我所拥有的:
我将初始视图作为导航控制器。这个控制器调用了几个视图,但我遇到问题的视图是一个UICollectionViewController。这是通过单击连接到navigationController的第一个viewController上的按钮来调用的。然后我有一个从UICollectionViewCell到新的ViewController的segue设置。所以我假设这是第二级NavigationController。
其次我有一个后退按钮图像显示在我的导航而不是文本<回来。
后退按钮在所有视图的导航控制器中显示正常,但从第二级segue调用的视图除外。
据我通过阅读有关此主题的其他帖子了解,这是因为在二级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)
}
此代码似乎没有将按钮添加到当前导航控制器。
这个项目使用的是Swift 3和Xcode 8
答案 0 :(得分:3)
使用
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中解释了这个原因。