navigationItem按钮未显示

时间:2019-01-10 10:08:46

标签: ios swift uinavigationitem

我有一个tokenGenerate: function (data, timeout) { let tokenG = jwt.sign(data, config.jwtSecret, { expiresIn: timeout // expires in 1 hour }); let newToken = new Token({ value: data.value, token: tokenG }); newToken.save(); return tokenG; } ,我想出示UINavigationItem

现在的问题是我正确添加了它们,它们可以正常工作并且100%工作。

,但它们没有显示在UIBarButtonItem上。

现在,我正在执行以下操作。

1-我正在隐藏后退按钮

UINavigationBar

2-当用户点击self.navigationItem.setHidesBackButton(isBackHidden, animated: false) 时,我会在运行时动态使用功能添加这2个按钮。

UIButton

3-我尝试使用那些功能并且结果仍然相同

let rightBarItem = UIBarButtonItem(title: "Button.Done".localized, style: .plain, target: self, action: #selector(self.saveButtonTapped))
navigationItem.rightBarButtonItem = rightBarItem     
let leftBarItem = UIBarButtonItem(title: "Button.Cancel".localized, style: .plain, target: self, action: #selector(self.cancelButtonTapped))
navigationItem.rightBarButtonItem?.tintColor = .red // still nothing    
navigationItem.leftBarButtonItem = leftBarItem

摘要

我尝试更改self.navigationItem.setLeftBarButton(UIBarButtonItem?, animated: Bool) self.navigationItem.setRightBarButton(UIBarButtonItem?, animated: Bool) ,因为它们在功能上正常工作,我认为这是颜色问题。

我尝试在tintColor中使用它们,因为它是动态的,因此可能是线程问题。

我已经调试并检查DispatchQueue.main.async {}中的项目,并且它们是否存在。

主要发生的事情:

未显示按钮,但在UINavigationItem上按其位置时,它们的工作正常。

1 个答案:

答案 0 :(得分:1)

  

现在的问题是我正确添加了它们,它们可以正常工作并且   工作100%。

     

但它们没有显示在UINavigationBar上。

基于您提到的内容,这只是一个UI问题-原因不明。

因此,您可以确认导航栏中是否显示按钮项,是让长条按钮项具有 custom 视图。将UIButton添加为UIBarButtonItem的自定义视图将是有效的,如下所示:

// right
let rightButton = UIButton(type: .custom)
rightButton.setTitle("Button.Done".localized, for: .normal)
rightButton.addTarget(self, action: #selector(saveButtonTapped), for: .touchUpInside)
let rightBarButtonItem = UIBarButtonItem(customView: rightButton)
navigationItem.setRightBarButton(rightBarButtonItem, animated: true)

// left
let leftButton = UIButton(type: .custom)
leftButton.setTitle("Button.Cancel".localized, for: .normal)
leftButton.addTarget(self, action: #selector(cancelButtonTapped), for: .touchUpInside)
let leftBarButtonItem = UIBarButtonItem(customView: leftButton)
navigationItem.setLeftBarButton(leftBarButtonItem, animated: true)

因此,对于任何需要的UI更新,您可以编辑rightButtonleftButton,例如:

leftButton.layer.backgroundColor = UIColor.red.cgColor
leftButton.layer.borderWidth = 2.0
leftButton.layer.borderColor = UIColor.black.cgColor


另外,我认为不需要调用:

self.navigationItem.setHidesBackButton(isBackHidden, animated: false)

设置左栏按钮项时,默认情况下应替代后退按钮。