关于常用的视图切换控件UITabBarController 与 UINavigationBar的那些事。。
一、UITabBar部分
多个视图之间可以随时相互切换的一种很方便直观的方法
效果是下方会出现一条有多个可按按钮的条,通过按下按钮就会切换到相应的视图
(1)先新建导航条
新建一个继承自UITabBarController的类,代码便会自动生成
(2)设置在应用程序启动后TabBar的子视图,并且把(1)中创建的tabbar设为根控制器,例如下面这样(tabBarController为(1)创建的控制器,并且在AppDelegate中初始化了,viewController1,2,3,4均为子视图)
tabBarController.viewControllers = @[viewController1,viewController2,viewController3,viewController4];
for (UIViewController *controller in tabBarController.viewControllers) {
UIViewController *view = controller.view;
}
self.window.rootViewController = controller;
***或者直接在init时把tabBarItem的属性放进去就可以不用历遍了
t***abBarItem的图标建议大小为32*32的png格式,并且打开alpha通道(?)否则无法显示
(3)如通过1和2创建了tabbar,则在对应的视图里可以直接通过self.tabBarItem.title来设置对应视图切换器的标题,
以及self.tabBarItem.image设置图标,self.tabBarItem.selectedImage来设置被选中时的图标,self.tabBarItem.badgeValue来显示对应视图切换器右上小红圈内的内容等等。。
二、UINavigationBar部分
通过上方导航条直接进行视图切换,(常见的比如添加好友啊,删除啊等等)中间显示标题,左右按钮可以自定义按钮内容以及切换到的页面
(1)先在AppDelegate中进行全局导航栏的设置
[[UINavigationBar appearance]setBarStyle:UIBarStyleDefault];
[[UINavigationBar appearance]setBarTintColor:[UIColor orangeColor]];
UINavigationController *controller = [[UINavigationController alloc]initWithRootViewController:tabBarController];
***这里把一中创建的tabBarController设置为全局导航栏并且把相关的信息放在其中
(2)全局导航栏以及子视图的设置:
-(void)viewDidLoad{
[super viewDidLoad];
self.navigationItem.title = @"这是导航栏";
UIBarButtonItem *back = [[UIBarButtonItem alloc]initWithTitle:@"返回"
style:UIBarButtonSystemItemDone target:nil action:nil];
self.navigationItem.backBarButtonItem = back;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"下一步" style:UIBarButtonSystemItemDone target:self action:@selector(gotoNext)];
}
-(void)gotoNext{
NaviViewControllerOne *page1 = [[NaviViewControllerOne alloc]init];
[self.navigationController pushViewController:page1 animated:YES];
}
self.navigationItem.rightBarButtonItem 这个设置了右边按钮的相关属性,对应的左边按钮则为leftBarButtonItem
self.navigationItem.backBarButtonItem 这个为跳转到下个页面后下个页面默认存在的返回按钮的属性,可以对他进行更改
在gotoNext方法中,pushViewController:page1 animated:YES 这个方法指明了跳向page1这个视图,同时在其他视图还可以通过这个方法直接返回根视图:popToRootViewControllerAnimated:YES
更新中。。。