1,创建并使用一个UINavigationController

[html] view plaincopy
  1. UINavigationController *aNav = [[UINavigationController alloc] init];

然后添加一个视图进去,否则导航栏也没有意义的

[html] view plaincopy
  1. UIViewController *aView = [[UIView alloc] initWithNibName: (*xib文件名*)];[aNav pushViewController:aView animated:NO];

//导航栏的第一个视图不要动画化
2,设置导航栏的左右按钮:
我说过,设置导航栏的按钮并不是去设置导航栏本身,而是当时被导航的视图控制器,比如我们对aView作设置。

设置其标题:

[html] view plaincopy
  1. aView.title = @"标题"; //配置一个按钮
  2. IBarButtonItem *callModalViewButton = [[UIBarButtonItem alloc]  initWithTitle:@"经文"
  3. style:UIBarButtonItemStyleBordered
  4. target:self
  5. action:@selector(callModalList)];
  6. self.navigationItem.leftBarButtonItem = callModalViewButton;
  7. [callModalViewButton release]; //由于本地视图会retain它,所以我们可以release了

可以看到,还是很简单的嘛。

3,其他常用方法和属性:

[html] view plaincopy
  1. self.navigationItem.leftBarButtonItem //左边栏项目本地视图
  2. self.navigationItem.rightBarButtonItem //右边栏项目本地视图.
  3. self.navigationItem.backBarButtonItem //后退栏项目本地视图.
  4. self.navigationItem.hidesBackButton //隐藏后退按钮(YES or NO)

在视图的viewWillAppear:方法中添加:

[html] view plaincopy
  1. [self.tableView reloadData];

不起作用,viewWillAppear:这个方法根本没有调用

后来发现原来用了UINavigationController后,viewWillAppear方法是没有效果的,要用UINavigationControllerDelegate的

[html] view plaincopy
  1. – navigationController:willShowViewController:animated:

方法才可以达到这个目的。

所以要做到这个,你必须做以下几步:
1. 设置代理类 nav.delegate = self;
2. 代理类实现UINavigationControllerDelegate Protocol
3. 在代理类中添加– navigationController:willShowViewController:animated:方法
如:

[html] view plaincopy
  1. - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
  2. [self.myTableView reloadData];
  3. }
[html] view plaincopy
  1. pushViewController:viewController animated:BOOL

(加载视图控制器)– 添加指定的视图控制器并予以显示,后接:是否动画显示

[html] view plaincopy
  1. popViewControllerAnimated:BOOL

(弹出当前试图控制器)– 弹出并向左显示前一个视图

[html] view plaincopy
  1. popToViewController:viewController animated:BOOL

(弹出到制定视图控制器)– 回到指定视图控制器, 也就是不只弹出一个

[html] view plaincopy
  1. popToRootViewControllerAnimated:BOOL

(弹出到根视图控制器)– 比如说你有一个“Home”键,也许就会实施这个方法了。

[html] view plaincopy
  1. setNavigationBarHidden:BOOL animated:BOOL

(设置导航栏是否显示)– 如果你想隐藏导航栏,这就是地方了。参照Picasa的WebApp样式 
 现pushViewController:animated:的不同页面转换特效
1. 首先要明确的是,不使用pushViewController的默认动画,所以在调用这个函数时,要将animated设置为NO.
2. 使用普通的来CATransition实现转换效果,代码如下:

[html] view plaincopy
  1. CATransition *animation = [CATransition animation];
  2. [animation setDuration:0.3];
  3. [animation setType: kCATransitionMoveIn];
  4. [animation setSubtype: kCATransitionFromTop];
  5. [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
  6. [self.navigationController pushViewController:m_poseAddIssueViewController animated:NO];
  7. [self.navigationController.view.layer addAnimation:animation forKey:nil];

转载于:https://www.cnblogs.com/sell/archive/2013/01/18/2865861.html

UINavigationController使用的一些技巧相关推荐

  1. iphone UINavigationController使用的一些技巧

    1,创建并使用一个UINavigationControllerUINavigationController *aNav = [[UINavigationController alloc] init]; ...

  2. UINavigationController技巧一——修改返回按钮的标题

    UINavigationController 一般push到另一界面后,返回按钮标题便是上一页面的title,但是对于push的第一页或者是上一页面没有title的,返回按钮标题便是默认back,如图 ...

  3. iOS UI基础-11.0 UINavigationController

    导航控制器 利用UINavigationController,可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是系统自带的"设置"应用 UINavigationCon ...

  4. 《iOS创意程序设计家》——第6.2节导航栏控制器UINavigationController

    本节书摘来自异步社区<iOS创意程序设计家>一书中的第6章,第6.2节导航栏控制器UINavigationController,作者 林柏全,更多章节内容可以访问云栖社区"异步社 ...

  5. 不可不知的:iOS开发的22个诡异技巧

    结合自身的实践开发经验总结出了22个iOS开发的小技巧,以非常欢乐的语调轻松解决开发过程中所遇到的各种苦逼难题,光读着便已忍俊不禁. 1. TableView不显示没内容的Cell怎么办? 类似于图1 ...

  6. iphone开发技巧整合

    1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...

  7. iPhone开发中的技巧整理

    1.NSCalendar用法  -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initW ...

  8. iPhone开发中的技巧整理(二)

    1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...

  9. [转] Xcode 高级调试技巧

    在苹果的官方文档中列出了我们在调试中能用到的一些命令,我们在这重点讲一些常用的命令 调试本地文件方法(Mac OS X):(lldb) target create "/Users/piaoy ...

最新文章

  1. 美研究人员公布“盲动”机器人技术细节
  2. 什么是shell,shell基础由浅入深,常用的shell命令、用法、技巧
  3. tokyo cabinet java_Tokyo Cabinet的安装,含Java版(CentOS 5.4)
  4. 百度安全 TrustZone SDK 正式成为 OP-TEE 官方推荐 Rust 开发环境
  5. boost::container实现双端队列选项的测试程序
  6. 【gRPC】 在.Net core中使用gRPC
  7. 小程序开发(8)-之跳转第三方小程序设计
  8. 搜狗高速浏览器怎么设置页面字体 设置方法介绍
  9. 树形结构 —— 树与二叉树
  10. Double类型比较大小
  11. openstack服务启动之nova-compute
  12. 如何解决微服务架构中的身份验证问题?
  13. 服务器控制口协议,服务器管理ipmi接口协议的扩展方法 Extension Methods server management interface protocol ipmi...
  14. iOS swift 2048小游戏开发教程(一)
  15. 如何找到最快的DNS服务器
  16. 解决搜狗输入法默认问题
  17. Leetcode1160. 拼写单词(C语言)
  18. 【洛谷】P1138 第k小整数
  19. Python文本分析---笔记
  20. 数仓维度建模系列-数仓规范篇

热门文章

  1. matlab调用python函数未定义函数类_从零学习Python—调用函数def用法(下)
  2. 父爱动画代码python_pygame用blit()实现动画效果的示例代码
  3. python 图片base64 编解码,转换成Opencv,PIL.Image图片格式
  4. Linux定期监视某文件变化,监控Linux文件变化,防止服务器被黑
  5. oracle中右击出现的含义,Oracle中经典的问题解决方案-Oracle
  6. jdk中的动态代理和cglib中动态代理的区别
  7. 学生信息的添加与查询_JAVA
  8. 你真的很熟分布式和事务吗?
  9. IDEA代码生成插件CodeMaker
  10. 理解Java对象序列化