我有一个从选项卡栏控制器调用的视图,我想在其中拥有一个leftBarButtonItem,带有徽标的topItem和一个rightBarButtonItem。
在第一个视图上,我成功地获得了带有徽标的topItem和rightBarButtonItem,但无法以编程方式或在故事板上拖动leftBarButtonItem。
而且我不明白为什么。这是代码。
private func setNavBarItems() {
self.navigationItem.leftBarButtonItem?.image = UIImage(named: "empty-photo-red")
if let navigationBar = self.navigationController?.navigationBar as? SeetyNavigationBar {
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
imageView.contentMode = .ScaleAspectFit
let image = UIImage(named: "logo-trans")
imageView.image = image
navigationBar.topItem?.titleView = imageView
}
self.navigationItem.rightBarButtonItem!.image = UIImage(named: "FAQ")
}
如果我用“!”解开leftBarButton,应用程序崩溃,所以我想没有leftBarButton,但是为什么呢?
当我从该视图执行到下一个视图的segue之后,我得到了带有徽标的leftBarButtonItem和rightBarButtonItem以及topItem消失。我使用在
viewDidLoad()
中调用的相同函数编辑:对于消失的我的topItem:
self.navigationItem.titleView = imageView
而不是navigationBar.topItem?.titleView = imageView
解决了该问题。 最佳答案
似乎您没有创建任何按钮,但在设置图像之前必须先创建按钮。
同样对于进入第二个屏幕后消失的图像,有两个选项,您有一个标签栏控制器,在它的下面有两个链接到您的标签栏控制器的视图:
// adding right button
let changeLocButton = UIBarButtonItem()
changeLocButton.title = "/!\\"
changeLocButton.action = "AnnotationsStatus:"
changeLocButton.target = self
self.parentViewController?.navigationItem.setRightBarButtonItem(changeLocButton, animated: false)
// adding right button
let changeLocButton = UIBarButtonItem()
changeLocButton.title = "/!\\"
changeLocButton.action = "AnnotationsStatus:"
changeLocButton.target = self
self.navigationItem.setRightBarButtonItem(changeLocButton, animated: false)
对于你的形象是一样的
- 情况1 :
if let navigationBar = self.parentViewController?navigationController?.navigationBar as? SeetyNavigationBar
-案例2:只需将代码复制并粘贴到第二个视图控制器中的导航栏中