【问题标题】:Swift UIBarButtonItem stays highlited when going back to the root controller回到根控制器时,Swift UIBarButtonItem 保持高亮状态
【发布时间】:2022-12-13 20:45:51
【问题描述】:
我的导航栏项目有问题。他们都有一个推动视图控制器的目标,但问题是当我通过向右拖动返回根视图控制器时,UIBarButtonItem 有时会在根控制器出现后保持突出显示。我附上两张导航栏的照片:
这种行为是不可预测的,因为它只是偶尔发生。有谁知道发生了什么以及如何解决它?
谢谢!
【问题讨论】:
标签:
swift
uinavigationcontroller
uibarbuttonitem
navigationbar
uinavigationitem
【解决方案1】:
不幸的是,这很可能是一个错误。当您在第二页上离开滑动过程而没有完成时会发生这种情况
如您所知,当您滑动页面时,barbuttons 上会发生动画。就好像按钮的 alpha 从 0 递增到 1
这个动画效果可能会在你离开页面滑动到一半的时候导致一个bug,因为按钮的动作没有问题。
如果在第一个 Viewcontroller 中更改按钮的 isEnabled 值,当页面关闭和打开时,问题将得到解决。
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navItem.rightBarButtonItem?.isEnabled = false
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
navItem.rightBarButtonItem?.isEnabled = true
}