我在标签栏控制器中嵌入了两个导航控制器。这两个导航控制器都有一个视图控制器。这两个视图控制器都有一个右栏按钮项,并且这两个栏按钮项已设置为customView并带有一个静态var sharedView,它与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)
}
}
感谢任何输入。
答案 0 :(得分:0)
最后,我找到了一种通过在每个VC中用单独的变量替换静态var来绕过此问题的方法。但是,仍然未知为什么使用静态变量会导致这种现象。我已经向苹果提交了有关此问题的报告。