从苹果文档中,我了解到可以使用 initWithNavigationBarClass:toolbarClass: 方法将 UiNavigationController 与另一个 Uinavigationbar 实例化。如何通过自定义 UiNavigationBar 子类和 IB 正确地做到这一点?
问问题
7760 次
3 回答
21
您可以像这样使用它来初始化导航控制器,
UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[CustomNavigationBar class] toolbarClass:nil];
这CustomNavigationBar
是通过子类化创建的自定义类UINavigationBar
。您可以使用setViewControllers
UINavigationController 的属性设置视图控制器。
如果您想在 IB 中执行此操作,请尝试此操作。从对象中选择导航栏,然后在身份检查器中选择导航栏的自定义类。
于 2013-01-31T03:27:27.837 回答
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];
上面的代码通知 UIKit 创建一个UINavigationController
带有子类的导航栏MyCustomNavigationBar
。然后,它将根视图控制器设置为存储在变量中的对象viewController
。
于 2013-01-31T03:32:47.113 回答
2
在这里为您的一般子类混合本杰明梅奥的答案
- (UINavigationController *)initWithRootViewController:(UIViewController *)rootViewController navigationBarClass:(Class)navigationBarClass {
self = [super initWithNavigationBarClass:navigationBarClass toolbarClass:UIToolbar.class];
if (self) {
self.viewControllers = @[rootViewController];
}
return self;
}
于 2013-03-29T20:29:26.607 回答