IOS--UI--LessonNavigationController
2015-07-10 21:27
495 查看
定义:
/*
1.UINavigationController 继承自 UIViewController 可以管理视图 (导航控制器)是 IOS 中提供的 用来管理多个视图控制器的控制器,被他管理的试图控制器必须要有层级关系(依赖关系,下一个视图出现必须依赖上一个出现过的视图)
2.要进入下一界面 先导入头文件 然后在创建下一个界面的视图控制器 push 进入
返回上一级界面 pop 返回
3.导航控制器以栈的形式管理多个视图控制器, push时 视图控制器入栈, pop 时 视图控制器出栈 (即 被销毁),屏幕上永远显示的是栈定元素
4.viewControllers 属性: 永远是获得当前
*/
准备 工作 修改根视图控制器 将导航控制器指定为根视图控制器
注:因为Navigation 是多视图控制器 我们至少建立两个以上的文件
1.导航功能的实现
建立 第一个视图 FirstViewController
.m 中 我们先建立一个简单的 Button 让他通过点击事件转入第二个界面即 SecondViewController
2.创建要进入的第二个界面 cmd+n
导航总结:
/*
1.要在使用的视图中加上底色 防止卡顿
2.Push 是进入 pop 是返回
3.pop 的方法里面有三种返回到界面的方法 选择自己想要的就可以了
*/
2.UINavigationBar 的导航栏自定义
定义:和控制器一样是个容器 显示提供的其他对象的内容 通过 UINavigationItem 展示 每个 controller 都会有专属的 Item
2.1 UINavigationItem 是 Bar 要显示的内容, Bar 是唯一的,每一个 controller 都要设置
常用属性: leftBarButtonItem / rightBarButtonItem /backBarButtonItem /title /titleView;
注意 :①leftBarButtonItem 虽然能点击 不是 button
①backBarButtonItem 是上一级的UINavigationItem控制
在FirstViewController.m 中 设置 item
导航栏总结:
/*
1.bar 下面有很多属性 要搞清楚他们的层级关系
2.bar 管理 item item 对应 controller
*/
/*
1.UINavigationController 继承自 UIViewController 可以管理视图 (导航控制器)是 IOS 中提供的 用来管理多个视图控制器的控制器,被他管理的试图控制器必须要有层级关系(依赖关系,下一个视图出现必须依赖上一个出现过的视图)
2.要进入下一界面 先导入头文件 然后在创建下一个界面的视图控制器 push 进入
返回上一级界面 pop 返回
3.导航控制器以栈的形式管理多个视图控制器, push时 视图控制器入栈, pop 时 视图控制器出栈 (即 被销毁),屏幕上永远显示的是栈定元素
4.viewControllers 属性: 永远是获得当前
*/
准备 工作 修改根视图控制器 将导航控制器指定为根视图控制器
//设置好一个视图 让导航控制器控制 FirstViewController *firstVC = [[FirstViewController alloc]init]; self.window .rootViewController = firstVC; //将导航控制器 指定为 window 的根视图控制器 UINavigationController *rootNC = [[UINavigationController alloc]initWithRootViewController:firstVC]; // 2.设置window 的根视图控制器 self.window .rootViewController = rootNC; [rootNC release]; [firstVC release]; 上面这些代码可以封装起来 下次使用的时候就会方便甚多 只要传值就够了
注:因为Navigation 是多视图控制器 我们至少建立两个以上的文件
1.导航功能的实现
建立 第一个视图 FirstViewController
.m 中 我们先建立一个简单的 Button 让他通过点击事件转入第二个界面即 SecondViewController
FirstViewController.m 注://为了让代码好看 我们不在- (void)viewDidLoad ;中写我们代码 写在外面 然后在这个代码进程中引入 - (void)viewDidLoad { [super viewDidLoad]; //加背景颜色 为了防止卡顿现象 self.view.backgroundColor= [UIColor redColor]; //要记得在里面调用 [self layoutPushButton]; [self configureCommonProperty]; [self customNavicationBarConten]; } // 点击进入下一界面 为了清晰明了 我们设方法名为 Push+xxx -(void)layoutPushButton{ UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; button.frame = CGRectMake(50, 150, 220, 40); [button setTitle:@"下一步" forState:UIControlStateNormal]; button.backgroundColor = [UIColor whiteColor]; [button addTarget:self action:@selector(handlePush:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; } -(void)handlePush:(UIButton *)sender{ //进入下一个视图的步骤 // 1.创建第二个视图 并引入 这个地方要在 F 的 点. m中引入第二个视图的头文件 //你想下一页显示谁 你就创建那个视图 导入头文件 在 controller 里面写谁 SecondViewController *secondVC= [[SecondViewController alloc]init]; // 2.通过导航控制器进入下一个界面 //得到自身坐在的多视图控制器(UINavigationController) [self.navigationController pushViewController:secondVC animated:YES]; [secondVC release]; }
2.创建要进入的第二个界面 cmd+n
SecondViewController.m - (void)viewDidLoad { [super viewDidLoad]; //加背景颜色 为了防止卡顿现象 self.view.backgroundColor = [UIColor yellowColor]; [self layoutPushButton]; [self layoutPopButton]; } //进入下一个界面的 Button -(void)layoutPushButton{ //1.创建对象 UIButton *pushButton = [UIButton buttonWithType:UIButtonTypeSystem]; //2.设置属性 pushButton.frame = CGRectMake(30, 150, 100, 30); [pushButton setTitle:@"NEXT" forState: UIControlStateNormal]; pushButton.backgroundColor = [UIColor whiteColor]; //3.Push 的点击事件 [pushButton addTarget:self action:@selector(handlePush:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:pushButton]; } //点击事件的方法 -(void)handlePush:(UIButton *)sender{ //进入下一个视图的步骤 // 1.创建第二个视图 并引入 这个地方要在 S 的. m中引入第三个视图的头文件 ThreeViewController *three = [[ThreeViewController alloc]init]; //获得根视图控制器(导航控制器) [self.navigationController pushViewController:three animated:YES]; [three release]; } //如果你就想着两个 我们可以设一个返回上一界面的 button -(void)layoutPopButton{ //创建对象 UIButton *popButton = [UIButton buttonWithType:UIButtonTypeSystem]; //配置属性 popButton.frame = CGRectMake(150, 150, 100, 30); [popButton setTitle:@"back on" forState:UIControlStateNormal]; //点击事件 [popButton addTarget:self action:@selector(handlePop:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:popButton]; } -(void)handlePop:(UIButton *)sender{ //1.获得多视图控制器(导航控制器) //返回上一级页面 [self.navigationController popViewControllerAnimated:YES]; // //2.返回主界面 [self.navigationController popToRootViewControllerAnimated:YES]; // //3.返回指定界面 [self.navigationController popToViewController:self.navigationController.viewControllers[1] animated:YES]; } //注意:新手錯誤 :新建自己想去的页面的对象 这时候你建立的就和之前堆栈里的不是一个地方 他们只是同一个类而已
导航总结:
/*
1.要在使用的视图中加上底色 防止卡顿
2.Push 是进入 pop 是返回
3.pop 的方法里面有三种返回到界面的方法 选择自己想要的就可以了
*/
2.UINavigationBar 的导航栏自定义
定义:和控制器一样是个容器 显示提供的其他对象的内容 通过 UINavigationItem 展示 每个 controller 都会有专属的 Item
设立公有的属性 // 在 APPDelegate 里面 设置的 bar 的颜色 就会应用于所有视图 rootNC.navigationBar .tintColor = [UIColor cyanColor]; //外观 rootNC.navigationBar.barStyle = UIBarStyleBlack; //透明度 rootNC.navigationBar.translucent = YES; //添加图片 default 竖屏 lanxxx 是横屏 rootNC.navigationBar setBackgroundImage:[UIImage imageNamed:图片名字] forBarMetrics:UIBarMetricsDefault];
2.1 UINavigationItem 是 Bar 要显示的内容, Bar 是唯一的,每一个 controller 都要设置
常用属性: leftBarButtonItem / rightBarButtonItem /backBarButtonItem /title /titleView;
注意 :①leftBarButtonItem 虽然能点击 不是 button
①backBarButtonItem 是上一级的UINavigationItem控制
在FirstViewController.m 中 设置 item
//1.导航条上面的标题 self.navigationItem.title = @"FirstVC"; //3.配置左边内容 显示废纸篓按钮 // 3.1创建按钮 UIBarButtonItem *leftItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(handleTrash:)]; // //3.2 给 leftitem 赋值 创建属性 self.navigationItem.leftBarButtonItem = leftItem; [leftItem release]; // 3.3 配置右边的内容 显示为+号 // UIBarButtonItem *jiaItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(handleJia:)]; // self.navigationItem. rightBarButtonItem = jiaItem; // [jiaItem release]; // 3.4配置右边内容 设置文字类型 UIBarButtonItem *jiaItem = [[UIBarButtonItem alloc]initWithTitle:@"添加" style:UIBarButtonSystemItemDone target:self action:@selector(handleJia:)]; self.navigationItem. rightBarButtonItem = jiaItem; [jiaItem release]; //3. 自定义的 titleview UIButton *button1 = [UIButton buttonWithType:UIButtonTypeContactAdd]; self.navigationItem.titleView = button1; //3.1 书签形状的右边按钮 UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(bookMark:)]; self.navigationItem.rightBarButtonItem = item; [item release]; // 还可以放数组 但是 item 就要加 s UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(bookMark:)]; UIBarButtonItem *item1 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(bookMark:)]; self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:item,item1, nil];
导航栏总结:
/*
1.bar 下面有很多属性 要搞清楚他们的层级关系
2.bar 管理 item item 对应 controller
*/
相关文章推荐
- iOS中UIView的用法(二)
- Algorithm Part I:Priority Queues
- Unique Binary Search Trees
- UILabel自适应高度
- Java集合 之 Queue集合
- sg(Sprague-Grundy)函数 小结
- HDOJ 1047 Integer Inquiry
- UI-UIColor-initWithRed:green:blue:alpha:调研
- UI编程_UILabel及其属性
- 关于String Stringbuffer StringBuilder
- mosquitto配置与使用
- java序列化和serialVersionUID
- EASYUI之Layout
- Java中序列化的serialVersionUID作用
- ZOJ 3757 Alice and Bob and Cue Sports
- iOS中UIWindow的用法(一)
- IOS--UI--LessonUIControl UIImageView/ UISegmentedControl
- quick3x_保证下标顺序排列,删除table中的元素
- Builder模式
- UIAlertView和UIActionSheet