UINavigationController
2015-11-19 23:39
399 查看
UINavigationController
创建
创建地在AppDelegate中RootViewController *rooVC = [[RootViewController alloc] init]; UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:rooVC]; // 将导航控制器作为window的视图控制器 // 系统运行时默认显示的是根视图控制器的视图 self.window.rootViewController = navC; [rooVC release]; [navC release];
主要属性
导航控制器的属性通过 当前显示的控制器的self.navigationController 进行设置1.topViewController(readonly)
取出栈顶的视图控制器
2.viewControllers
以数组形式取出栈中所有视图控制器
3.navigationBar(readonly)
取出导航控制器的导航条
主要方法
1.下一页(指定控制器入栈)- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
2.返回上一视图(当前控制器出栈 显示栈中下一个控制器视图)
- (UIViewController *)popViewControllerAnimated:(BOOL)animated;
3.返回指定视图(该视图后的所有视图控制器出栈)
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
4.返回首页(除了首页 其他控制器均出栈)
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
UINavigationBar
设置导航条上填充色 背景图片 透明度一个UINavigationBar 管理一组 UINavigationItem
// 状态栏高20 // 导航条高44 // 导航条的高就是44 状态栏的背景 是导航条延伸过去的 // 设置导航条的颜色 self.navigationController.navigationBar.barTintColor = [UIColor greenColor]; // 设置背景图片 // 横屏状态下 导航条高32 // 1. 图片高度小于44 效果:平铺 // 2. 图片高度等于44 效果:只覆盖导航条 // 3. 图片高度在44和64之间 效果:平铺 // 4. 图片高度等于64 效果:覆盖导航条和状态栏 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"32064"] forBarMetrics:UIBarMetricsDefault]; // 7.0后 导航条默认是半透明的 // 起始点从屏幕左上角 开始计算 // 关闭半透明后 起始点从导航条下面 开始计算 // 一般使用默认的半透明状态 不用考虑起始点 self.navigationController.navigationBar.translucent = NO;
UIBarButtonItem
初始化导航条上的button 并将值传给UINavigationItem (和image 贴到 imageView.image上一个性质)// 设置左按钮 UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"left"] style:UIBarButtonItemStylePlain target:self action:@selector(barButtonClick:)]; self.navigationItem.leftBarButtonItem = barButtonItem; // 释放 [barButtonItem release]; UIBarButtonItem *barButtonItem1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(barButtonClick:)]; self.navigationItem.leftBarButtonItem = barButtonItem1; [barButtonItem1 release]; // 设置右按钮 UIBarButtonItem *barButtonItem2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"right"] style:UIBarButtonItemStylePlain target:self action:@selector(barButtonItem1Click:)]; self.navigationItem.rightBarButtonItem = barButtonItem2; [barButtonItem2 release];
UINavigationItem
设置导航栏标题和按钮// 设置页面导航栏 标题 self.navigationItem.title = @"首页"; // 在标题位置 设置一个视图 UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 150, 44)]; titleView.backgroundColor = [UIColor blueColor]; self.navigationItem.titleView = titleView; [titleView release];
两个试图控制器之间的传值
从前往后传
假设在首页有一个button 其作用是让navigationController push另外一个试图控制器再创建一个textField 现欲将textField上输入的值传到另一个试图控制器的textField中
// button的创建 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(100, 100, 100, 100); button.backgroundColor = [UIColor brownColor]; [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; // textField的创建 UITextField *textFiled = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 50)]; textFiled.borderStyle = UITextBorderStyleRoundedRect; [self.view addSubview:textFiled];
buttonClick方法的实现:
- (void)buttonClick:(UIButton *)button { SecondViewController *secondVC = [[SecondViewController alloc] init]; // 最好将两个控制器的视图上textFiled 各自都设置成属性(在.h中声明 可在本类以外使用) 以方便使用 // 这里有个注意点: 下式写法是错误的 必须用一个字符串来接收text 然后再将字符串赋值给 secondVC.textField.text secondVC.textField.text = self.textField.text;// 错误 secondVC.textFieldText = self.textField.text; [self.navigationController pushViewController:secondVC animated:YES]; [secondVC release]; }
相关文章推荐
- UIView,UIButton,UIImageView等设置圆角,设置阴影,设置边框的方法
- UE4代码规范
- 我的iOS学习历程 - 导航控制器(UINavigationController) + 界面之间的传值
- 我的iOS学习历程 - 导航控制器(UINavigationController) + 界面之间的传值
- UI 第八天 UINavigationController
- Range Sum Query - Immutable(easy)
- Range Sum Query - Immutable(easy)
- 文件和目录之stat族函数<stat | fstat | lstat | fstatat>——APUE学习笔记(2)
- iOS 8中使用UIAlertController
- Android线程间通信(补充):UI线程
- 从头认识java-9.11 Queue
- UIAlertView和UIActionSheet类在IOS8以后的改动
- UI基础知识 -- UIScrollView UIPageControl
- UI第八天:UINavigationController、界⾯通信
- target overrides the FRAMEWORK_SEARCH_PATHS build settings
- java 序列化 serialVersionUID transient
- iOS常见错误5-iOS 自定义UITableViewCell出现白线
- 代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
- UIImageView中最容易用错的属性UIContentMode小记
- UI_触摸事件