iOS基本控制-UINavigationController 传统的价值观,代理传统价值观,正向传统价值观,反传统的价值观
/*
程序过程:
1。创建一个根视图,一个二级视图
2,根视图NavigationItem.title = Root 二级视图NavigationItem.title
= Second
根视图NavigationItem.rightButton入栈二级视图
3,
二级视图中创建三个buttonbutton一 button二 button三
三个button点击时间都是出栈。并把自己的button的
titel 赋给根视图的NavigationItem.title
4。当再次进入二级视图时,推断根视图的NavigationItem.title和哪个button的title一样。假设
一样。就把button的title颜色设置为红色。
*/
<Foundation/Foundation.h>
@protocol
SendValue <NSObject]]>
- (void)sendBtnTitle:(NSString*)title;
@end
"XSAppDelegate.h"
#import "XSRootViewController.h"
@implementation XSAppDelegate
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.window= [[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]];
// Override point for customization after application launch.
self.window.backgroundColor=
[UIColorwhiteColor];
XSRootViewController*rootViewController = [[XSRootViewControlleralloc]init];
UINavigationController*navController = [[UINavigationControlleralloc]initWithRootViewController:rootViewController];
self.window.rootViewController=
navController;
[self.windowmakeKeyAndVisible];
return
YES;
}
"XSRootViewController.h"
#import "XSSecondViewController.h"
@interface XSRootViewController()
@end
@implementationXSRootViewController
- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
self
= [super
initWithNibName:nibNameOrNil
bundle:nibBundleOrNil];
if
(self) {
// Custom initialization
}
return
self;
}
- (void)viewDidLoad
{
[super
viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor=
[UIColoryellowColor];
self.navigationItem.title=
@"Root";
UIBarButtonItem*btnItem = [[UIBarButtonItemalloc]initWithTitle:@"Push"style:UIBarButtonItemStylePlaintarget:selfaction:@selector(btnClick:)];
self.navigationItem.rightBarButtonItem=
btnItem;
}
//#pragma mark --SendVaule
- (void)sendBtnTitle:(NSString*)title
{
self.navigationItem.title=
title;
}
- (void)btnClick:(UIBarButtonItem*)btnItem
{
XSSecondViewController*secondViewController = [[XSSecondViewControlleralloc]init];
secondViewController.delegate=
self;
secondViewController.currentTitle=
self.navigationItem.title;
[self.navigationControllerpushViewController:secondViewControlleranimated:YES];
}
<UIKit/UIKit.h>
#import "SendValue.h"
@interface
XSSecondViewController : UIViewController
//定义代理
@property
(nonatomic,assign)id<SendValue>
delegate;
//创建一个正向传值的属性,
@property
(nonatomic,copy)NSString*currentTitle;
@end
"XSSecondViewController.h"
#import "XSRootViewController.h"
@interface XSSecondViewController()
@end
@implementationXSSecondViewController
- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
self
= [super
initWithNibName:nibNameOrNil
bundle:nibBundleOrNil];
if
(self) {
// Custom initialization
}
return
self;
}
- (void)viewDidLoad
{
[super
viewDidLoad];
// Do any additional setup after loading the view.
UIBarButtonItem*btnItem = [[UIBarButtonItemalloc]initWithTitle:@"Pop"style:UIBarButtonItemStylePlaintarget:selfaction:@selector(btnClick)];
self.navigationItem.leftBarButtonItem=
btnItem;
self.view.backgroundColor=
[UIColorblueColor];
UIButton*btn1 = [UIButtonbuttonWithType:UIButtonTypeSystem];
btn1.frame=
CGRectMake(10, 80, 300, 40);
[btn1 setTitle:@"按键一"forState:UIControlStateNormal];
[btn1 setBackgroundColor:[UIColorwhiteColor]];
[btn1 addTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];
btn1.tag= 1;
//假设button的标题和属性中的_currentTitle同样,即和根页面中的导航条的title一样
if
([_currentTitleisEqualToString:btn1.currentTitle])
{
btn1.selected=
YES;
}
//假设selected为YES就运行setTitleColor
[btn1 setTitleColor:[UIColorredColor]forState:UIControlStateSelected];
[self.viewaddSubview:btn1];
UIButton*btn2 = [UIButtonbuttonWithType:UIButtonTypeSystem];
btn2.frame=
CGRectMake(10, 130, 300, 40);
[btn2 setTitle:@"按键二"forState:UIControlStateNormal];
[btn2 setBackgroundColor:[UIColorwhiteColor]];
[btn2 addTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];
btn2.tag= 2;
//假设button的标题和属性中的_currentTitle同样,即和根页面中的导航条的title一样
if
([_currentTitleisEqualToString:btn2.currentTitle])
{
btn2.selected=
YES;
}
//假设selected为YES就运行setTitleColor
[btn2 setTitleColor:[UIColorredColor]forState:UIControlStateSelected];
[self.viewaddSubview:btn2];
UIButton*btn3 = [UIButtonbuttonWithType:UIButtonTypeSystem];
btn3.frame=
CGRectMake(10, 180, 300, 40);
[btn3 setTitle:@"按键三"forState:UIControlStateNormal];
[btn3 setBackgroundColor:[UIColorwhiteColor]];
[btn3 addTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];
btn3.tag= 3;
//假设button的标题和属性中的_currentTitle同样,即和根页面中的导航条的title一样
if
([_currentTitleisEqualToString:btn3.currentTitle])
{
btn3.selected=
YES;
}
//假设selected为YES就运行setTitleColor
[btn3 setTitleColor:[UIColorredColor]forState:UIControlStateSelected];
[self.viewaddSubview:btn3];
}
- (void)btnClick
{
[self.navigationControllerpopToRootViewControllerAnimated:YES];
}
- (void)btnClick:(UIButton*)btn
{
//取出button的标题
NSString*title = btn.currentTitle;
//推断代理中是否有sendBtnTitle:这个函数
if
([_delegate
respondsToSelector:@selector(sendBtnTitle:)]) {
//代理运行自己的sendBtnTitle函数,传參是title
[_delegatesendBtnTitle:title];
}
[self.navigationControllerpopToRootViewControllerAnimated:YES];
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
iOS基本控制-UINavigationController 传统的价值观,代理传统价值观,正向传统价值观,反传统的价值观的更多相关文章
- Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式
封面:洛小汐 作者:潘潘 一直以来 他们都说为了生活 便追求所谓成功 顶级薪水.名牌包包 还有学区房 · 不过 总有人丢了生活 仍一无所获 · 我比较随遇而安 有些事懒得明白 平日里问心无愧 感兴趣的 ...
- iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...
- [转]iOS学习之UINavigationController详解与使用(三)ToolBar
转载地址:http://blog.csdn.net/totogo2010/article/details/7682641 iOS学习之UINavigationController详解与使用(二)页面切 ...
- iOS视图控制对象生命周期
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- [转]iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController
转载地址:http://blog.csdn.net/totogo2010/article/details/7682433 iOS学习之UINavigationController详解与使用(一)添加U ...
- IOS 视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍
原文 Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍 前言 在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iO ...
- iOS学习之UINavigationController详解与使用(三)ToolBar
1.显示Toolbar 在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了. [cpp] view plaincopy [ ...
- iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController
iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem是上篇,我们接着讲UINavigationController的重要作用,页面的管理和切换. ...
- 【iOS系列】-UINavigationController的使用(Segue传递数据)
[iOS系列]-UINavigationController的使用 UINavigationController是以以栈(先进后出)的形式保存子控制器, 常用属性: UINavigationItem有 ...
随机推荐
- 基于visual Studio2013解决算法导论之050强连通分支
题目 强连通分支 解决代码及点评 // 强连通分支.cpp : 定义控制台应用程序的入口点. // #include<iostream> #define MAX 100 using ...
- 自定义安装Apache+php+mysql网站服务器环境
自定义安装Apache+php+mysql 这种方式是比较麻烦的安装方式,需要具有一定的对Apache了解的基础上才能安装,安装顺序就是先安装Apache软件,然后安装php,最后安装mysql.这里 ...
- android JB2连拍降速原理介绍
1.HAL层 (1)alps\mediatek\platform\mt6589\hardware\camera\core\camshot\MultiShot\MultiShot.cpp sleep实现 ...
- sublime2 c++的一些使用配置
1 下载安装好tdw gcc后,配置好环境变量后,配置sublime2. tools->build system-> new build system... 里面输入: { "c ...
- webform--常用的控件
一.简单控件 1.Lable——标签:在网页中呈现出来的时候会变成span标签 属性:Text——标签上的文字 BackColor,ForeColor——背景色,前景色 Font——字体 Bold- ...
- Arduino 入门程序示例之直流电机(2015-06-15)
概述 演示直流电机的控制. 示例程序 PWM控制直流电机 略过控制电机转停的示例啦,有需要就把这里的 PWM 换成数字口输出 HIGH 或 LOW 就行了. // ------------------ ...
- iTextSharp
iTextSharp 116毫秒处理6G的文件 前言: 有一家印刷企业专为米兰新娘,微微新娘,金夫人这样的影楼印刷婚纱相册.通过一个B2B销售终端软件,把影楼的相片上传到印刷公司的服务器,服务器对 ...
- 基于visual Studio2013解决C语言竞赛题之0905文件读写显示
题目
- xend调用xenstore的出错揭秘
近期发现几例问题,均是xend里面报了同一个错误 File "/usr/lib64/python2.4/site-packages/xen/xend/xenstore/xstransact. ...
- Swift学习笔记十三:继承
一个类能够继承(inherit)还有一个类的方法(methods),属性(property)和其他特性 一.基本的语法 class Human{ var name :String init(){ na ...