微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决标签栏导致导航控制器栏按钮项customView消失

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

感谢任何输入。

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。