/*

 

 

 

 程序过程:

 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颜色设置为红色。



                **总结



     1,从第一层向第二层正向传參时:
          在第二层页面中创建一个接收这个參数的属性
          在第一层向第二层跳转时 创建完第二层的实例对象,

 */



<SendValue.h>
#import
<Foundation/Foundation.h>



@protocol
SendValue <NSObject]]>

- (void)sendBtnTitle:(NSString*)title;

@end





<XSAppDelegate.m>


#import
"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.m>

#import
"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];

}






<XSSecondViewController.h>

#import
<UIKit/UIKit.h>

#import "SendValue.h"



@interface
XSSecondViewController : UIViewController

//定义代理

@property
(nonatomic,assign)id<SendValue>
delegate;

//创建一个正向传值的属性,

@property
(nonatomic,copy)NSString*currentTitle;

@end



<XSSecondViewController.m>

#import
"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 传统的价值观,代理传统价值观,正向传统价值观,反传统的价值观的更多相关文章

  1. Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式

    封面:洛小汐 作者:潘潘 一直以来 他们都说为了生活 便追求所谓成功 顶级薪水.名牌包包 还有学区房 · 不过 总有人丢了生活 仍一无所获 · 我比较随遇而安 有些事懒得明白 平日里问心无愧 感兴趣的 ...

  2. iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem

    http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...

  3. [转]iOS学习之UINavigationController详解与使用(三)ToolBar

    转载地址:http://blog.csdn.net/totogo2010/article/details/7682641 iOS学习之UINavigationController详解与使用(二)页面切 ...

  4. iOS视图控制对象生命周期

    iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...

  5. [转]iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController

    转载地址:http://blog.csdn.net/totogo2010/article/details/7682433 iOS学习之UINavigationController详解与使用(一)添加U ...

  6. IOS 视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途

    iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...

  7. Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍

    原文 Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍 前言 在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iO ...

  8. iOS学习之UINavigationController详解与使用(三)ToolBar

    1.显示Toolbar  在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了. [cpp] view plaincopy [ ...

  9. iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController

    iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem是上篇,我们接着讲UINavigationController的重要作用,页面的管理和切换. ...

  10. 【iOS系列】-UINavigationController的使用(Segue传递数据)

    [iOS系列]-UINavigationController的使用 UINavigationController是以以栈(先进后出)的形式保存子控制器, 常用属性: UINavigationItem有 ...

随机推荐

  1. QT5 动态链接库的创建和使用(QT自己做动态库给自己使用)

    记录一下QT5 动态链接库的创建和使用 在文章的最后有完成的代码供下载 1.创建动态链接库 先新建一个库项目 选择chose进入下一下页面,类型选择共享库,输入一个名称:我输入的是sld 再点击下一步 ...

  2. WebLech是一个功能强大的Web站点下载与镜像工具

    WebLech是一个功能强大的Web站点下载与镜像工具.它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为.WebLech有一个功能控制台并采用多线程操作. http://sour ...

  3. POJ 3422 Kaka&#39;s Matrix Travels (最小费用最大流)

    POJ 3422 Kaka's Matrix Travels 链接:http://poj.org/problem? id=3422 题意:有一个N*N的方格,每一个方格里面有一个数字.如今卡卡要从左上 ...

  4. BZOJ 1057: [ZJOI2007]棋盘制作( dp + 悬线法 )

    对于第一问, 简单的dp. f(i, j)表示以(i, j)为左上角的最大正方形, f(i, j) = min( f(i + 1, j), f(i, j + 1), f(i + 1, j + 1)) ...

  5. Linux下Nginx+tomcat应用系统性能优化

    软件环境及服务器配置如下: Linux rh6.3,Tomcat7.0.29,Nginx1.2.7 mysql5.1,jdk1.6.0 mysql5.1 memcached 1.4.15 Xeno 2 ...

  6. 深入浅出单实例Singleton设计模式

    深入浅出单实例Singleton设计模式 陈皓 单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了.这个设计模式主要目的是想在整个系统 ...

  7. 用overflow-y 解决web页面抖动问题

    页面抖动(左右抖动)让人视觉上很不爽.. /** original : php攻城师 http://blog.csdn.net/phpgcs **/ 最开始我也以为是 layout 不一致的原因..后 ...

  8. Thawte SSL123 SSL证书-中国证书.com

    Thawte SSL123 SSL证书是域名验证型证书.也是Thawte最廉价的一款证书.该证书签发方便,仅仅须要验证域名全部权就可以签发,无需提交认证文件,通常签发时间仅仅须要1-2个小时.SSL1 ...

  9. Flex中怎么给表格中的滚动栏定位

    1.问题背景 假设表格中的字段过多,会出现滚动栏,在将滚动栏滚到一定的位置时,又一次刷新表格.滚动栏会回到原处,原来查看的字段还得继续滚动,才干查看到. 2.实现实例 <? xml versio ...

  10. Amlogic开关机按键功能实现

    在做AMlogic项目的时候,配置按键后,发现电源键仅仅能关机,不能开机,非常是郁闷 后来发现是漏掉了一个地方没有配置,firmware/arc_power/irremote2arc.c 这个文件中面 ...