UINavigationController使用的一些技巧
1,创建并使用一个UINavigationController
- UINavigationController *aNav = [[UINavigationController alloc] init];
然后添加一个视图进去,否则导航栏也没有意义的
- UIViewController *aView = [[UIView alloc] initWithNibName: (*xib文件名*)];[aNav pushViewController:aView animated:NO];
//导航栏的第一个视图不要动画化
2,设置导航栏的左右按钮:
我说过,设置导航栏的按钮并不是去设置导航栏本身,而是当时被导航的视图控制器,比如我们对aView作设置。
设置其标题:
- aView.title = @"标题"; //配置一个按钮
- IBarButtonItem *callModalViewButton = [[UIBarButtonItem alloc] initWithTitle:@"经文"
- style:UIBarButtonItemStyleBordered
- target:self
- action:@selector(callModalList)];
- self.navigationItem.leftBarButtonItem = callModalViewButton;
- [callModalViewButton release]; //由于本地视图会retain它,所以我们可以release了
可以看到,还是很简单的嘛。
3,其他常用方法和属性:
- self.navigationItem.leftBarButtonItem //左边栏项目本地视图
- self.navigationItem.rightBarButtonItem //右边栏项目本地视图.
- self.navigationItem.backBarButtonItem //后退栏项目本地视图.
- self.navigationItem.hidesBackButton //隐藏后退按钮(YES or NO)
在视图的viewWillAppear:方法中添加:
- [self.tableView reloadData];
不起作用,viewWillAppear:这个方法根本没有调用
后来发现原来用了UINavigationController后,viewWillAppear方法是没有效果的,要用UINavigationControllerDelegate的
- – navigationController:willShowViewController:animated:
方法才可以达到这个目的。
所以要做到这个,你必须做以下几步:
1. 设置代理类 nav.delegate = self;
2. 代理类实现UINavigationControllerDelegate Protocol
3. 在代理类中添加– navigationController:willShowViewController:animated:方法
如:
- - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
- [self.myTableView reloadData];
- }
- pushViewController:viewController animated:BOOL
(加载视图控制器)– 添加指定的视图控制器并予以显示,后接:是否动画显示
- popViewControllerAnimated:BOOL
(弹出当前试图控制器)– 弹出并向左显示前一个视图
- popToViewController:viewController animated:BOOL
(弹出到制定视图控制器)– 回到指定视图控制器, 也就是不只弹出一个
- popToRootViewControllerAnimated:BOOL
(弹出到根视图控制器)– 比如说你有一个“Home”键,也许就会实施这个方法了。
- setNavigationBarHidden:BOOL animated:BOOL
(设置导航栏是否显示)– 如果你想隐藏导航栏,这就是地方了。参照Picasa的WebApp样式
现pushViewController:animated:的不同页面转换特效
1. 首先要明确的是,不使用pushViewController的默认动画,所以在调用这个函数时,要将animated设置为NO.
2. 使用普通的来CATransition实现转换效果,代码如下:
- CATransition *animation = [CATransition animation];
- [animation setDuration:0.3];
- [animation setType: kCATransitionMoveIn];
- [animation setSubtype: kCATransitionFromTop];
- [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
- [self.navigationController pushViewController:m_poseAddIssueViewController animated:NO];
- [self.navigationController.view.layer addAnimation:animation forKey:nil];
转载于:https://www.cnblogs.com/sell/archive/2013/01/18/2865861.html
UINavigationController使用的一些技巧相关推荐
- iphone UINavigationController使用的一些技巧
1,创建并使用一个UINavigationControllerUINavigationController *aNav = [[UINavigationController alloc] init]; ...
- UINavigationController技巧一——修改返回按钮的标题
UINavigationController 一般push到另一界面后,返回按钮标题便是上一页面的title,但是对于push的第一页或者是上一页面没有title的,返回按钮标题便是默认back,如图 ...
- iOS UI基础-11.0 UINavigationController
导航控制器 利用UINavigationController,可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是系统自带的"设置"应用 UINavigationCon ...
- 《iOS创意程序设计家》——第6.2节导航栏控制器UINavigationController
本节书摘来自异步社区<iOS创意程序设计家>一书中的第6章,第6.2节导航栏控制器UINavigationController,作者 林柏全,更多章节内容可以访问云栖社区"异步社 ...
- 不可不知的:iOS开发的22个诡异技巧
结合自身的实践开发经验总结出了22个iOS开发的小技巧,以非常欢乐的语调轻松解决开发过程中所遇到的各种苦逼难题,光读着便已忍俊不禁. 1. TableView不显示没内容的Cell怎么办? 类似于图1 ...
- iphone开发技巧整合
1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...
- iPhone开发中的技巧整理
1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initW ...
- iPhone开发中的技巧整理(二)
1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...
- [转] Xcode 高级调试技巧
在苹果的官方文档中列出了我们在调试中能用到的一些命令,我们在这重点讲一些常用的命令 调试本地文件方法(Mac OS X):(lldb) target create "/Users/piaoy ...
最新文章
- 美研究人员公布“盲动”机器人技术细节
- 什么是shell,shell基础由浅入深,常用的shell命令、用法、技巧
- tokyo cabinet java_Tokyo Cabinet的安装,含Java版(CentOS 5.4)
- 百度安全 TrustZone SDK 正式成为 OP-TEE 官方推荐 Rust 开发环境
- boost::container实现双端队列选项的测试程序
- 【gRPC】 在.Net core中使用gRPC
- 小程序开发(8)-之跳转第三方小程序设计
- 搜狗高速浏览器怎么设置页面字体 设置方法介绍
- 树形结构 —— 树与二叉树
- Double类型比较大小
- openstack服务启动之nova-compute
- 如何解决微服务架构中的身份验证问题?
- 服务器控制口协议,服务器管理ipmi接口协议的扩展方法 Extension Methods server management interface protocol ipmi...
- iOS swift 2048小游戏开发教程(一)
- 如何找到最快的DNS服务器
- 解决搜狗输入法默认问题
- Leetcode1160. 拼写单词(C语言)
- 【洛谷】P1138 第k小整数
- Python文本分析---笔记
- 数仓维度建模系列-数仓规范篇
热门文章
- matlab调用python函数未定义函数类_从零学习Python—调用函数def用法(下)
- 父爱动画代码python_pygame用blit()实现动画效果的示例代码
- python 图片base64 编解码,转换成Opencv,PIL.Image图片格式
- Linux定期监视某文件变化,监控Linux文件变化,防止服务器被黑
- oracle中右击出现的含义,Oracle中经典的问题解决方案-Oracle
- jdk中的动态代理和cglib中动态代理的区别
- 学生信息的添加与查询_JAVA
- 你真的很熟分布式和事务吗?
- IDEA代码生成插件CodeMaker
- 理解Java对象序列化