标签栏导致导航控制器栏按钮项customView消失

时间:2020-10-11 02:58:53

标签: ios swift xcode12

我在标签栏控制器中嵌入了两个导航控制器。这两个导航控制器都有一个视图控制器。这两个视图控制器都有一个右栏按钮项,并且这两个栏按钮项已设置为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)
    }
}

The storyboard structure

How it now acts (gif)

感谢任何输入。

1 个答案:

答案 0 :(得分:0)

最后,我找到了一种通过在每个VC中用单独的变量替换静态var来绕过此问题的方法。但是,仍然未知为什么使用静态变量会导致这种现象。我已经向苹果提交了有关此问题的报告。