我在选项卡栏控制器中嵌入了两个导航控制器。这两个导航控制器都有一个视图控制器。这两个视图控制器都有一个右栏按钮项,并且这两个栏按钮项已使用静态var sharedView设置为customView,这符合UIView继承。sharedView已设置为黄色。
我希望两个条形按钮项目总是显示黄色。但是,当在两个选项卡之间切换时,导航栏按钮项目将在每四个切换中消失一次。
我制作了一个复制此问题的示例项目:https://github.com/lenameow/TestCustomView
相关代码:
导入基础导入UIKit
class SharedView: UIView {
static var sharedView = SharedView(frame: CGRect(x: 0, y: 0, width: 25, height: 25))
func setupUI(button: UIBarButtonItem) {
SharedView.sharedView.backgroundColor = UIColor.yellow
button.customView = SharedView.sharedView
}
}
class ViewController: UIViewController {
@IBOutlet weak var testBarButton: UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
SharedView.sharedView.setupUI(button: testBarButton)
}
}
class SecondViewController: UIViewController {
@IBOutlet weak var testBarButton: UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
SharedView.sharedView.setupUI(button: testBarButton)
}
}
故事板结构
它现在的行为(gif(
感谢您的意见。
最后,我找到了一种绕过这个问题的方法,在每个VC中用单独的变量替换静态var。然而,仍然不知道为什么使用静态var会导致这种现象。我已经就这个问题向苹果公司提交了一份报告。