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 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他 ...
随机推荐
- form 表单练习
创建战网通行证账号,开启您的冒险之旅.<form> <table border="0"> <tr> & ...
- Linux(Centos)下安装MySQL
转载:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 一.mysql简介 说到数据库,我们大多想到的是关 ...
- position 为absolute时/float 为right,span为block
元素分为内联元素和区块元素两类(当然也有其它的),在内联元素中有个非常重要的常识,即内两元素是不可以设置区块元素所具有的样式,例如:width | height.relative : 原来是什么类型的 ...
- 编程是一项需要时间来掌握的技能(Anders的经验)
Anders现在每天仍然花大量的时间实际写代码,并且未来会一直写下去.他很清醒的知道自己长处:“相比起管理,我还是更擅长于编程.” 事实上,Anders的成名之作Turbo Pascal通过出售软件授 ...
- mysql命令行的基本用法
基础介绍:1.在linux下使用下列命令,请确认mysql的bin目录是否已经加入到PATH路径中,或者是已经进入到mysql安装路径下的bin目录查看PATHshell> echo $PATH ...
- 总结spring下配置dbcp,c3p0,proxool数据源链接池
转载自 http://hiok.blog.sohu.com/66253191.html applicationContext-datasource-jdbc.xml <?xml version= ...
- 更改debian的软件源sources.list
之前debian6这系统是在公司装的.公司有百兆光纤,多线接入,就随便选了个源,也没多大问题.现在回到家里变成了2M的ADSL,很多软件更新不下来. 更改软件源,也就修改/etc/apt/source ...
- python标准库 difflib-比较序列
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #difflib比较序列 #版本2.1及之后 #作用:包含一些用来计 ...
- HTTP 协议实现
一.超文本传输协议及HTTP包 HTTP协议用于在Internet上发送和接收消息.HTTP协议是一种请求-应答式的协议--客户端发送一个请求,服务器返回该请求的应答,所有的请求与应答都是HTT ...
- Android学习总结——实时显示系统时间
我们都知道System.currentTimeMillis()可以获取系统当前的时间,这里要实时显示就可以开启一个线程,然后通过handler发消息,来实时的更新TextView上显示的系统时间.具体 ...