在UINavigationController中设置自定义导航栏类

时间:2014-09-09 10:29:58

标签: ios7 swift ios8 xcode6-beta7

我有一个自定义navigationBar:

class Name_UINavigationBar: UINavigationBar {
    // code
}

我想以编程方式将其设置为导航控制器。所以我试过了:

var navController : UINavigationController = UINavigationController(
            navigationBarClass: object_getClass(Name_UINavigationBar),
            toolbarClass: nil)
// code

但它崩溃说:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
    reason: 'MyProject.Name_UINavigationBar is not a subclass of UINavigationBar'

2 个答案:

答案 0 :(得分:5)

试试这个。

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

我遇到了同样的错误,并且能够让它再次运行。

答案 1 :(得分:0)

在Swift中,没有受支持的方法来获取对象的Class。你问题几乎肯定与object_getClass方法有关,我认为从Beta 5开始不再支持这种方法。

我认为像这样的API要么会更新,重写,要么很快就会被弃用。现在你需要在Objective-C中完成它。