栏栏按钮项目未显示在navigationBar中

Jul*_*les 14 uinavigationbar uinavigationitem ios swift

我正在开发一个应用程序,我的初始视图控制器嵌入在导航控制器和标签栏控制器中.

在我的应用程序中,我有3个不同的选项卡,一个选项卡是设置视图.这是一个带5个按钮的tableview.每个按钮在触摸时都会显示相同的视图控制器.

当我触摸其中一个按钮时,我仍然有一个漂亮的绿色导航栏,但我的按钮不起作用.

我尝试将导航项拖到我的故事板中的视图中,然后在其中放置一个条形按钮项.我可以在我的故事板中看到该按钮,但是当我运行它时它不会显示在我的应用程序中.

我还在viewDidLoad()中添加了以下代码:

let leftItem = UIBarButtonItem(title: "< Back", style: .Done, target: self, action: Selector("Save"))
let rightItem = UIBarButtonItem(title: "Save", style: .Plain, target: self, action: Selector("Save"))

//self.parentViewController?.navigationItem.leftBarButtonItem = leftItem // also doesn't work

navigationController?.navigationItem.leftBarButtonItem = leftItem
navigationController?.navigationItem.rightBarButtonItem = rightItem
Run Code Online (Sandbox Code Playgroud)

但它不会有任何影响.

我检查了故事板中是否为我的视图分配了正确的UIViewController,做了几个Clean构建(CMD + Shift + K)和Rebuilds(CMD + B).

以下图片是我的故事板的一部分的屏幕截图,以及我的应用程序的屏幕截图,其中按钮不会显示.

编辑

添加了有关视图中控件的新屏幕截图.这些不工作,没有在我viewDidLoad中额外的代码.

我的故事板的截图

应用程序按钮应显示的屏幕截图

我视图中控件设置的屏幕截图

Mar*_*Him 10

代替

navigationController?.navigationItem.leftBarButtonItem = leftItem
Run Code Online (Sandbox Code Playgroud)

navigationItem.leftBarButtonItem = leftItem
Run Code Online (Sandbox Code Playgroud)

更新我建议您直接在故事板中将它们添加到Viewcontroller中


iDe*_*Dev 6

我也遇到了同样的问题。

在iOS 11中,它工作正常,但在iOS 10或更低版本中,它没有显示以编程方式添加的UIBarButtonItems。

请为UIBarButtonItem分配框架。

let button =  UIButton(type: .custom)
button.setImage(UIImage(named: "img_name"), for:.normal)
button.addTarget(self, action: #selector(btnAction), for: .touchUpInside)
button.frame = CGRect(x:0, y:0, width:32, height:32)
let barButton = UIBarButtonItem(customView: button)
self.navigationItem.rightBarButtonItem = barButton
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的,谢谢你!:) (2认同)

Ers*_*gin 5

删除你的第一个导航控制器,第二个你不需要添加后退按钮只需使用push segue,第三个尝试使用self.navigationItem.leftBarButtonItem(尝试在开头添加self.)*原始答案是评论.