anasaitali
anasaitali

Reputation: 1514

Set custom navigation bar class in UINavigationController

I have a custom navigationBar :

class Name_UINavigationBar: UINavigationBar {
    // code
}

and I want to set it to my navigation controller programmatically. So I tried :

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

But it crash saying :

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

Upvotes: 7

Views: 5887

Answers (2)

Isuru
Isuru

Reputation: 31283

Try this.

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

I encountered the same error and was able to get it working again like that.

Upvotes: 7

Infinity James
Infinity James

Reputation: 4735

In Swift there is no supported way to get the Class of an object. You're problem is almost certainly to do with the object_getClass method which I believe is no longer supported as of Beta 5.

I imagine APIs like this will either be updated, rewritten or simply deprecated soon. For now you will need to do it in Objective-C.

Upvotes: 0

Related Questions