在UINavigationController子类中设置UINavigationBar子类

时间:2017-01-03 20:49:45

标签: ios uinavigationcontroller swift3 uinavigationbar subclass

我有一个UINavigationBar的子类,我想创建一个使用这个UINavigationController子类的UINavigationBar的子类。我知道如何设置默认UINavigationController以使用自定义导航栏

let navController = UINavigationController(navigationBarClass: CustomNavigationBar.self, toolbarClass: nil)

但是,我希望能够创建一个自定义UINavigationController(以编程方式),已将我的自定义导航栏设置为其导航栏类。我已经看到如何在这个链接上做到这一点,但它似乎有点过时(2012年)和' hacky AF' - https://stackoverflow.com/a/9610801/2654425。我知道如何在' Storyboard'通过设置UINavigationController的导航栏类,但我希望在我的自定义UINavigation控制器中以编程方式完成此操作。

这是一个基本的UINavigationBarUINavigationController子类:

class CustomNavigationBar: UINavigationBar {

    override init(frame: CGRect) {
        super.init(frame: frame)

    }
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!


    }

    override func draw(_ rect: CGRect) {
        self.backgroundColor = UIColor.red
    }


}

class CustomNavigationController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

我不确定在哪里设置自定义导航栏。任何帮助是极大的赞赏。 :)

1 个答案:

答案 0 :(得分:1)

您应该在实例化UINavigationController子类时进行设置。具体来说,UINavigationController.init(navigationBarClass:AnyClass?,toolbarClass:AnyClass?)。请参阅Apple的文档中的UINavigationController