在我的演示项目中有两个UIViewControllers
,叫做VC1和VC2。
此演示项目中没有任何其他附加代码。
VC1中的右侧栏按钮为灰色当我使用弹出手势从VC2取消弹出到VC1然后使用弹出手势或点击后退按钮弹回。 灰色样式与禁用或突出显示相同。
但是,该按钮仍处于启用状态,并且再次点击该样式时将恢复该样式。 这是iOS12的错误吗? 我现在没有较低的设备或模拟器,我只在10.0,12.0,12.1测试它。 iOS 10.0正常工作正常。 该错误似乎只发生在iOS 12及更高版本上。 有人对此有所了解吗?
我找到了两个解决方案来解决这个问
将系统项从Custom
更改为另一个,例如Add
。
这是一个更快的解决方案,但遗憾的是,您无法自定义此按钮。要放置自定义按钮,您可以尝试其他解决方案:
删除UIBarButtonItem
表单故事板,然后从代码创建它们:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Test", style: .plain, target: self, action: #selector(rightBarButtonTapped))
}
@objc func rightBarButtonTapped() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc2 = storyboard.instantiateViewController(withIdentifier: "viewController2")
self.navigationController?.pushViewController(vc2, animated: true)
}
override func viewWillDisappear(_ animated: Bool) {
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Test", style: .plain, target: self, action: #selector(rightBarButtonTapped))
super.viewWillDisappear(animated)
}
}
请记住为视图控制器设置Storyboard ID
以进行推送。在我的例子中,它是viewController2
。
编辑:
你可以添加UIButton
而不是UIBarButtonItem
,就是这样;)你可以从故事板级别或编写代码。