IOS之【UINavigationController的使用】

原创 2013年12月03日 11:31:31

OneAppDelegate.m文件


#import "OneAppDelegate.h"

#import "OneViewController.h"

@implementation OneAppDelegate


#pragma mark 导航控制器的代理方法

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

   NSLog(@"已经显示:%@", viewController);

}


- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

   NSLog(@"即将显示:%@", viewController);

}


- (void)dealloc

{

    [_windowrelease];

    [superdealloc];

}


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]]autorelease];

    // Override point for customization after application launch.

    //初始化一个根控制器

    OneViewController *root = [[[OneViewControlleralloc] init] autorelease];

    

    UINavigationController *vc = [[[UINavigationControlleralloc] initWithRootViewController:root]autorelease];

    

    vc.delegate =self;

    

    self.window.rootViewController = vc;

    

    [self.windowmakeKeyAndVisible];

    return YES;

}



OneViewController.h文件


#import <UIKit/UIKit.h>

@protocol SecondViewControllerDelegate;


@interface OneViewController :UIViewController <SecondViewControllerDelegate>

- (void)setString:(NSString *)str;

@end




OneViewController.m文件


#import "OneViewController.h"

#import "SecondViewController.h"

@interface OneViewController ()


@end


@implementation OneViewController


#pragma mark - SecondViewControllerDelegate的方法

- (void)setSecondData:(NSString *)str {

    NSLog(@"Second传过来的数据:%@", str);

}


#pragma mark - 其他方法

- (void)setString:(NSString *)str {

    NSLog(@"Second传过来的数据:%@", str);

}


- (void)left {

    NSLog(@"点击了左边");

}


- (void)right {

    SecondViewController *second = [[SecondViewControlleralloc] init];

    second.title =@"2个控制器";

    

    second.delegate =self;

    

    //传递数据给下一个控制器

    [secondsetString:@“。。。。。。。];

    

    // second放入栈中

    // self.navigationController可以拿到子控制器所在的导航控制器

    [self.navigationControllerpushViewController:second animated:YES];

    

    [secondrelease];

}


- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

   self.title =@"红色控制器";

    //self.navigationItem.title = @"红色控制器";

    

    // 设置左边的item

    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItemalloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAddtarget:selfaction:@selector(left)]autorelease];

    

    // 设置右边的item

    UIButton *btn = [UIButtonbuttonWithType:UIButtonTypeContactAdd];

    [btn addTarget:selfaction:@selector(right)forControlEvents:UIControlEventTouchUpInside];

    

    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItemalloc] initWithCustomView:btn]autorelease];

    

    self.view.backgroundColor = [UIColorredColor];

    

    //设置返回键的文字为"返回"

    self.navigationItem.backBarButtonItem = [[[UIBarButtonItemalloc] initWithTitle:@"返回"style:UIBarButtonItemStylePlaintarget:nilaction:nil]autorelease];

}


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end




SecondViewController.h文件


#import <UIKit/UIKit.h>

@protocol SecondViewControllerDelegate;


//@class OneViewController;

@interface SecondViewController :UIViewController


//@property (nonatomic, retain) OneViewController *One;


- (void)setString:(NSString *)string;


- (IBAction)click:(id)sender;


@property (nonatomic,retain) id<SecondViewControllerDelegate> delegate;

@end


@protocol SecondViewControllerDelegate <NSObject>

- (void)setSecondData:(NSString *)str;

@end



SecondViewController.m文件



#import "SecondViewController.h"

//#import "OneViewController.h"


@interface SecondViewController ()


@end


@implementation SecondViewController



- (void)viewDidLoad

{

    [superviewDidLoad];

    

}


- (void)viewDidUnload {

    [superviewDidUnload];

   self.delegate =nil;

    //self.One = nil;

}


- (void)dealloc {

    [_delegate release];

    //[_One release];

    [superdealloc];

}


#pragma mark - 公共方法

- (void)setString:(NSString *)string {

    NSLog(@"One传过来的数据:%@", string);

}


- (void)click:(id)sender {

    //一口气跳回根控制器(会把中间的控制器都移到栈外)

    // [self.navigationController popToRootViewControllerAnimated:YES];

    

    //跳回到指定的控制器

    // [self.navigationController popToViewController:<#(UIViewController *)#> animated:<#(BOOL)#>];

    

    //[self.One setString:@"12345"];

    

   if ([self.delegaterespondsToSelector:@selector(setSecondData:)]) {

        [self.delegatesetSecondData:@"12345"];

    }

    

    //移除栈顶的控制器

    [self.navigationControllerpopViewControllerAnimated:YES];

}

@end

版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS开发,UINavigationController属性和基本用法详解

Demo: //1,改变导航控制器的颜色 两种方法 [[UINavigationBar appearance] setBarTintColor:[UIColor purpleColor]]; ...
  • walden00
  • walden00
  • 2015年09月10日 17:48
  • 1750

iOS开发之高级视图—— UINavigationController(一)简单导航功能实现

UINavigationController是IOS编程中比较常用的一种容器view controller,很多系统的控件以及很多有名的APP中(如qq,系统相册等)都有用到。         nav...
  • panjican
  • panjican
  • 2016年05月26日 14:13
  • 1449

iOS中导航控制器的使用 UINavigationController

import UIKit class MyNavigationController: UINavigationController,UINavigationControllerDelegate...
  • linyufengly
  • linyufengly
  • 2017年04月02日 20:01
  • 268

swift详解之二十二-----------UINavigationController的基本用法和页面传值几种方式

UINavigatioUInController的基本用法和页面传值几种方式本文介绍UINavigationController基本用法,因为涉及多页面顺便介绍页面传值1、手写代码创建UINaviga...
  • u010586842
  • u010586842
  • 2015年09月03日 19:12
  • 4919

UINavigationController应用之—-从无导航条push到有导航条

前言:当你想在一个没有导航条的页面push到一个有导航条的页面的时候,你是否试过去隐藏前一个页面的导航条,然后push后再显示?然后看起来很有闪烁感。这里就教你如何用系统的api去完成这件事. ...
  • u014632353
  • u014632353
  • 2015年06月06日 15:21
  • 3676

自定义UINavigationController 标题、左右边按钮 navigationbar 设置多个按钮

#import @interface ILNavigationController : UINavigationController @end
  • u011043997
  • u011043997
  • 2014年04月11日 17:08
  • 6990

iOS-UINavigationController官方文档分析大总结

iOS-UINavigationController官方文档分析大总结 字数3131 阅读114 评论0 喜欢6 一、概述 类继承关系如下:UINavigationContr...
  • qq_30513483
  • qq_30513483
  • 2016年07月29日 20:20
  • 1677

关于自定义导航栏的那些事儿 UINavigationController

本文只是把我看到的关于自定义导航栏的一些资料搜集了一下 ios7  之后,默认样式的状态栏和导航栏是连在一起的,但是实际上导航栏的位置和大小是和之前系统版本一样的,依然是贴在状态栏下面,依然是高44p...
  • u013929312
  • u013929312
  • 2015年03月09日 16:07
  • 747

UINavigationController属性 & 导航栏透明度影响下边子视图的原点位置

//UINavigationController 导航视图控制器, 是用来管理视图控制器的控制器 #warning 注意: 每个导航视图控制器, 至少有一个视图控制器      ...
  • xxxzhikvip
  • xxxzhikvip
  • 2015年12月01日 19:25
  • 992

自定义UINavigationController导航栏背景

1。         [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation_bar_background"]...
  • daiyelang
  • daiyelang
  • 2014年11月10日 16:43
  • 11064
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS之【UINavigationController的使用】
举报原因:
原因补充:

(最多只允许输入30个字)