无法在选项卡栏控制器下的视图控制器内自定义导航栏

问题描述 投票:0回答:1

我的标签栏控制器下有三个视图控制器。 他们扩展了 BaseViewController 以进行导航定制。 在选项卡栏控制器之外的其他视图控制器中,BaseViewController 可以正常工作。但在选项卡栏控制器的视图控制器内部,任何更改都会得到反映,并且仅显示带有默认后退按钮的默认导航栏。

    func configureSettingBtn() {
        let settingImage = UIImage(named: "settingIcon")
        let settingBtn = UIButton()
        settingBtn.setImage(settingImage, for: .normal)
        settingBtn.addTarget(self, action: #selector(settingApp), for: .touchUpInside)
        let setting = UIBarButtonItem(customView: settingBtn)
        
        navigationItem.rightBarButtonItems = [setting]
    }
    
    @objc func settingApp(sender: UIBarButtonItem) {
        
    }
    
    func configureInfoBtn() {
        let infoImage = UIImage(named: "infoIcon")
        let infoBtn = UIButton()
        infoBtn.setImage(infoImage, for: .normal)
        infoBtn.addTarget(self, action: #selector(infoAction), for: .touchUpInside)
        let info = UIBarButtonItem(customView: infoBtn)
        let spacer = createSpacer()
        
        self.navigationItem.rightBarButtonItems?.append(contentsOf: [spacer, info])
    }
    
    @objc func infoAction() {
        
    }
    
    func configureAnnounceBtn() {
        let announceImage = UIImage(named: "messageIcon")
        let announceBtn = UIButton()
        announceBtn.setImage(announceImage, for: .normal)
        announceBtn.addTarget(self, action: #selector(announceAction), for: .touchUpInside)
        let announce = UIBarButtonItem(customView: announceBtn)
        let spacer = createSpacer()
        
        self.navigationItem.rightBarButtonItems?.append(contentsOf: [spacer, announce])
    }
    
    @objc func announceAction() {
        
    }

我在BaseViewController中编写了这些函数并尝试使用它们,但它在选项卡栏下的视图控制器中不起作用。我尝试了我编写的代码,还尝试自定义故事板中的导航栏,但失败了。我更喜欢代码工作。

如何解决这个问题?任何想法将不胜感激。

向标签栏控制器内每个视图控制器中的按钮添加不同功能的想法也将受到赞赏。

ios swift uitabbarcontroller uinavigationbar uibarbuttonitem
1个回答
0
投票

你可以阅读这篇文章,然后你就会得到答案。iOS 中的自定义导航栏

© www.soinside.com 2019 - 2024. All rights reserved.