如何使用自定义UINavigationBar [英] How to use custom UINavigationBar

查看:109
本文介绍了如何使用自定义UINavigationBar的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 UINavigationBar 的子类。

@interface MyNavigationBar : UINavigationBar

做了一些更改,现在想要我的应用程序 NavigationController 会使用它:

Made some changes and now want that my application NavigationController would use it:

 _navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
 [_window addSubview:[_navigationController view]];
[self.window makeKeyAndVisible];

我希望_ navigationController 会有 MyNavigationBar

如何做到这一点?

谢谢。

推荐答案

您必须在其中创建一个带有 UINavaigationController 的xib。然后,您可以在Interface Builder中选择 navigationBar ,并将该类更改为 UINavigationBar 的子类。

You have to create a xib with a UINavaigationController in it. You can then select the navigationBar in Interface Builder and change the class to your subclass of UINavigationBar.

然后为了使实例化更容易,我将一个类别添加到`UINavigationController中:

Then to make this a little easier to instantiate I add a category to `UINavigationController like:

@interface UINavigationController (DSCNavigationController)

+ (UINavigationController *)dsc_navigationControllerWithRootViewController:(UIViewController *)rootViewController;

@end

@implementation UINavigationController (DSCNavigationController)

+ (UINavigationController *)dsc_navigationControllerWithRootViewController:(UIViewController *)rootViewController;
{
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"DSCNavigationController" owner:nil options:nil];

    NSAssert(1 == [topLevelObjects count], @"DSCNavigationController should have one top level object");

    UINavigationController *navigationController = [topLevelObjects objectAtIndex:0];

    NSAssert([navigationController isKindOfClass:[UINavigationController class]], @"Should have a UINavigationController");

    [navigationController pushViewController:rootViewController animated:NO];

    return navigationController;
}

@end

在班级的顶部使用它确保在我的情况下导入类别它看起来像

At the top of the class that uses it makes sure to import the category in my case it looks like

#import "UINavigationController+DSCNavigationController"

然后使用它看起来像

MyViewController *myViewController = [[MyViewController  alloc] init];
UINavigationController *navigationController = [UINavigationController dsc_navigationControllerWithRootViewController:myViewController];

这篇关于如何使用自定义UINavigationBar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆