---
title: "init(navigationBarClass:toolbarClass:)"
framework: uikit
role: symbol
role_heading: Initializer
path: "uikit/uinavigationcontroller/init(navigationbarclass:toolbarclass:)"
---

# init(navigationBarClass:toolbarClass:)

Initializes and returns a newly created navigation controller that uses your custom bar subclasses.

## Declaration

```swift
init(navigationBarClass: AnyClass?, toolbarClass: AnyClass?)
```

## Parameters

- `navigationBarClass`: Specify the custom doc://com.apple.uikit/documentation/UIKit/UINavigationBar subclass you want to use, or specify nil to use the standard doc://com.apple.uikit/documentation/UIKit/UINavigationBar class.
- `toolbarClass`: Specify the custom doc://com.apple.uikit/documentation/UIKit/UIToolbar subclass you want to use, or specify nil to use the standard doc://com.apple.uikit/documentation/UIKit/UIToolbar class.

## Return Value

Return Value The initialized navigation controller object or nil if there was a problem initializing the object.

## Discussion

Discussion To customize the overall appearance of a navigation bar, use UIAppearance APIs instead of this method. If you use this initialization method to create a navigation bar that uses custom bar subclasses, you are responsible for pushing and setting view controllers before presenting the navigation controller onscreen.

## See Also

### Creating a navigation controller

- [init(rootViewController:)](uikit/uinavigationcontroller/init(rootviewcontroller:).md)
- [init(nibName:bundle:)](uikit/uinavigationcontroller/init(nibname:bundle:).md)
- [init(coder:)](uikit/uinavigationcontroller/init(coder:).md)
