IOS开发UI篇-NavigationController的控制器之间的跳转
一、效果图如下
1> 第一个控制器的NavigationBar隐藏
2> 有按钮,可以跳转到下一个控制器,返回上一个控制器或者根控制器
二、思路代码
思路:
1> 设置window的跟控制器为navigationController
2> 设置一个控制器的基类
主要代码实现如下:
AppDelegate.m
// // AppDelegate.m // navigation的简单实用(纯代码) #import "AppDelegate.h" #import "GXNavController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 创建一个导航控制器 GXNavController* navc = [[GXNavController alloc] init]; // 设置跟控制器为导航控制器 self.window.rootViewController = navc; [self.window makeKeyAndVisible]; return YES; } .....
导航控制器类:GXNavController.h
#import <UIKit/UIKit.h> @interface GXNavController : UINavigationController @end
导航控制器类:GXNavController.m
// // GXNavController.m // navigation的简单实用(纯代码) #import "GXNavController.h" #import "GXFirstController.h" @interface GXNavController () @end @implementation GXNavController // 重写父类的init方法,设置跟控制器 - (instancetype)init { GXFirstController* first = [[GXFirstController alloc] init]; first.view.backgroundColor = [UIColor whiteColor]; return [super initWithRootViewController:first]; } - (void)viewDidLoad { [super viewDidLoad]; // 第一个隐藏导航条 self.navigationBar.hidden = YES; } // 重写导航控制器的push方法,设置返回按钮为back - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { // 显示导航条 self.navigationBar.hidden = NO; [super pushViewController:viewController animated:animated]; } - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated { // 第一个隐藏导航条 self.navigationBar.hidden = YES; return [super popToRootViewControllerAnimated:animated]; } @end
基类:GXBaseViewController.h
#import <UIKit/UIKit.h> @interface GXBaseViewController : UIViewController @property (nonatomic,weak)UIButton *popBtn; @property (nonatomic,weak)UIButton *pushBtn; - (void)pop2Previous; - (void)push2Next; @end
基类:GXBaseViewController.m
// // GXBaseViewController.m // navigation的简单实用(纯代码) #import "GXBaseViewController.h" @interface GXBaseViewController () @end @implementation GXBaseViewController - (void)viewDidLoad { [super viewDidLoad]; // 创建返回的按钮 UIButton* popBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [popBtn setTitle:@"返回上一个控制器" forState:UIControlStateNormal]; [popBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; popBtn.backgroundColor = [UIColor grayColor]; popBtn.frame = CGRectMake(100, 100, 200, 50); self.popBtn = popBtn; // 创建Push到下一个控制器 UIButton* pushBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [pushBtn setTitle:@"push到下一个控制器" forState:UIControlStateNormal]; [pushBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; pushBtn.backgroundColor = [UIColor grayColor]; pushBtn.frame = CGRectMake(100, 300, 200, 50); self.pushBtn = pushBtn; // 注册监听事件 [self.popBtn addTarget:self action:@selector(pop2Previous) forControlEvents:UIControlEventTouchUpInside]; [self.pushBtn addTarget:self action:@selector(push2Next) forControlEvents:UIControlEventTouchUpInside]; } #pragma mark - 子类重写 #pragma mark - 上一个 - (void)pop2Previous { [self.navigationController popViewControllerAnimated:YES]; } #pragma mark -下一个 - (void)push2Next { [self.navigationController pushViewController:nil animated:YES]; } @end
IOS开发UI篇-NavigationController的控制器之间的跳转的更多相关文章
- IOS开发UI篇-NavigationController的基本使用
一.简介 一个iOS的app很少只由一个控制器组成,除非这个app极其简单 当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小v ...
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇—多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
- IOS开发UI篇—导航控制器属性和基本使用
IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...
- iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期 一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在stor ...
- iOS开发UI篇—控制器的创建
iOS开发UI篇—控制器的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在代理方法中 ...
- iOS开发UI篇—控制器的View的创建
iOS开发UI篇—控制器的View的创建 一.6种创建控制器View的方式 #import "NJAppDelegate.h" #import "NJViewContro ...
- iOS开发UI篇—Modal简单介绍
iOS开发UI篇—Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...
- iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...
- iOS开发UI篇—从代码的逐步优化看MVC
iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他 ...
随机推荐
- shell 脚本FTP自动上传文件
下面的脚本 会把本地的文本文件压缩后, 上传到FTP服务器上. 里面有一点小逻辑, 就是上传的文本文件 是 日期时间.txt 形式的, 一天写一个日志文件, 今天的文件不上传, 只上传 老的日志文件. ...
- Unix,windows和Mac中的换行
Unix 系统里,每行结尾只有“<换行>”,即“\n”:Windows系统里面,每行结尾是“<换行><回车 >”,即“\r\n”:Mac系统里,每行结尾是“< ...
- mysql导入到elasticsearch
JDBC importer for Elasticsearch Java Database 连接(JDBC) 导入运行获取数据从JDBC 源 安装: 1.在下面的步骤 替换<version> ...
- eclipse编辑工具小结
eclipse编辑工具小结 这两天从myeclipse转入eclipse,整体感觉不错,速度更快些,也没在出现各种意外的调试错误.不能断点等情况,并且对整个编辑环境的使用有了更深入的认识,再次对主要几 ...
- 绩效等级系统与MBO
1. 目标管理(MBO)在一定时期内(一般为一年)组织活动的期望成果,是组织使命在一定时期内的具体化,是衡量组织活动有效性的标准.由于组织活动个体活动的有机叠加,因此只有各个员工.各个部门的工作对组织 ...
- pod setup 报CocoaPods was not able to update the `master` repo 错误解决办法
先删除全局的缓存: $ sudo rm -fr ~/Library/Caches/CocoaPods/ $ sudo rm -fr ~/.cocoapods/repos/master/ 还不行的话就把 ...
- python学习之路-10 网络编程之进阶
本篇介绍内容 作用域 python类的多继承 IO多路复用 socketserver之源码剖析 多线程和多进程 作用域 if 1 == 1: name = "xxx" print( ...
- XCode中在提示窗体中对已弃用的API接口画上红线
当我们在XCode中写程序时会不断的出现相关API提示窗体,那敲起来是一个爽啊. 有时候会看到一些API已经弃用了被画上红色的横线.说明该接口已经被弃用,仍保留,但不建议使用,对弃用API实现画横线事 ...
- ZooKeeper的学习与应用
近期大概学习了一下ZooKeeper,本身并没有深入.LGG尝试着在虚拟机里面搭了平台,看了看一些教材,从网上到处看别人的博文并引用之,还请各位大牛们谅解我的剽窃.现总结例如以下. 1. ZooKee ...
- Git 上传本地命令
1.首先建立一个文件夹用以测试 2.在test中写入一个main.c的文件 其内容如下: 3.然后就建立一个git仓库了 4.然后就是把内容加进去了,上传上去 5.然后我们看下git log的信息 6 ...