使用UINavigationController的initWithNavigationBarClass的正确方法:toolbarClass:

inf*_*eqd 12 ios

从apple docs我了解到UiNavigationController可以使用initWithNavigationBarClass:toolbarClass:方法与另一个Uinavigationbar实例化.如何通过自定义UiNavigationBar子类和IB正确地做到这一点?

iDe*_*Dev 20

您可以像这样使用它来初始化导航控制器,

UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[CustomNavigationBar class] toolbarClass:nil];
Run Code Online (Sandbox Code Playgroud)

CustomNavigationBar是由子类创建的自定义类UINavigationBar.您可以使用setViewControllersUINavigationController 的属性设置viewcontrollers .

如果你想在IB中这样做,试试这个.从对象中选择导航栏,在身份检查器中,选择导航栏的自定义类.

在此输入图像描述 在此输入图像描述


Ben*_*ayo 6

在Interface Builder中,单击导航控制器内的导航栏.在右侧面板上检查它,并将自定义类更改为自UINavigationBar定义子类.

在代码中,确保已导入导航栏子类的头文件,并编写类似于以下内容的内容.

// This code assumes `MyCustomNavigationBar` is the name of your custom subclass, and that `viewController` is a UIViewController object created earlier.

// To create the containing navigation controller
UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[MyCustomNavigationBar class] toolbarClass:[UIToolbar class]];

// To set the root view controller in the navigation controller
navigationController.viewControllers = @[viewController];
Run Code Online (Sandbox Code Playgroud)

上面的代码通知UIKit创建一个带子UINavigationController类的导航栏MyCustomNavigationBar.然后,它将根视图控制器设置为存储在变量中的对象viewController.