如何找出属于当前 viewController 的导航控制器?
How do I find out the navigation controller that is part of the current viewController?
我有
在导航控制器上显示按钮时出现问题。我对此进行了研究,我认为这与导航的工作方式有关。从堆栈中推送和弹出。
这是我的:
我有一个导航控制器的初始视图。此控制器调用多个视图,但我遇到问题的视图是 UICollectionViewController。这是通过单击第一个连接到导航控制器的 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
使用
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中解释。
我有 在导航控制器上显示按钮时出现问题。我对此进行了研究,我认为这与导航的工作方式有关。从堆栈中推送和弹出。
这是我的:
我有一个导航控制器的初始视图。此控制器调用多个视图,但我遇到问题的视图是 UICollectionViewController。这是通过单击第一个连接到导航控制器的 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
使用
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中解释。