ios 用纯代码写程序的时候,navigationController的导航栏的设置

  我们都知道,如果用storyBoard设置导航栏很容易,点击左右item的时候,进入下一个界面,导航栏的颜色是跟上一层的是一样的,用纯代码写的时候,可以在当前控制器,和从当前控制器进入到下一个控制器都用代码实现对导航栏的控制,但是,每次都写代码设置,很麻烦,所以,可以这样:

创建一个MainTabBarController的类,在Appdelegate.m里面完成:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    self.window.rootViewController = [[MainTabBarController alloc] init];

    [self.window makeKeyAndVisible];

    return YES;

}

然后,在MainTabBarController.m里面

- (void)viewDidLoad {

    [super viewDidLoad];

    [self setUpAllChildVc];

}

 

- (void)setUpAllChildVc

{

//有几个界面,设置几个

    MapViewController *HomeVC = [[HFMapViewController alloc] init];

    [self setUpOneChildVcWithVc:HomeVC Image:@"地图-首页" selectedImage:@"地图选中-首页" title:@"地图"];

 

    AppointmentViewController *appointmentVC = [[HFAppointmentViewController alloc] init];

    [self setUpOneChildVcWithVc:appointmentVC Image:@"预约-首页" selectedImage:@"预约选中-首页" title:@"预约"];

 }

 

- (void)setUpOneChildVcWithVc:(UIViewController *)Vc Image:(NSString *)image selectedImage:(NSString *)selectedImage title:(NSString *)title

{

    MainNavigationController *nav = [[MainNavigationController alloc] initWithRootViewController:Vc];

 

    UIImage *myImage = [UIImage imageNamed:image];

    myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

 

    //tabBarItem,是系统提供模型,专门负责tabbar上按钮的文字以及图片展示

    Vc.tabBarItem.image = myImage;

 

    UIImage *mySelectedImage = [UIImage imageNamed:selectedImage];

    mySelectedImage = [mySelectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

 

    Vc.tabBarItem.selectedImage = mySelectedImage;

 

    Vc.tabBarItem.title = title;

 

    [self addChildViewController:nav];

    

}

只要需要导航栏的,都可以把当前控制器设置为MainNavigationController的跟试图控制器

posted @ 2016-11-09 22:09  我叫白小飞  阅读(1637)  评论(0编辑  收藏  举报