iOS 12导航栏栏取消弹出手势时按钮变为灰色

问题描述 投票:3回答:1

在我的演示项目中有两个UIViewControllers,叫做VC1和VC2。 此演示项目中没有任何其他附加代码。 enter image description here

VC1中的右侧栏按钮为灰色当我使用弹出手势从VC2取消弹出到VC1然后使用弹出手势或点击后退按钮弹回。 灰色样式与禁用或突出显示相同。

enter image description here

但是,该按钮仍处于启用状态,并且再次点击该样式时将恢复该样式。 这是iOS12的错误吗? 我现在没有较低的设备或模拟器,我只在10.0,12.0,12.1测试它。 iOS 10.0正常工作正常。 该错误似乎只发生在iOS 12及更高版本上。 有人对此有所了解吗?

ios swift ios12
1个回答
0
投票

我找到了两个解决方案来解决这个问

将系统项从Custom更改为另一个,例如Add

enter image description here

enter image description here

这是一个更快的解决方案,但遗憾的是,您无法自定义此按钮。要放置自定义按钮,您可以尝试其他解决方案:

删除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,就是这样;)你可以从故事板级别或编写代码。

© www.soinside.com 2019 - 2024. All rights reserved.