UINavigationController

导航控制器,管理多个视图控制器,
导航控制器可以认为是管理控制器的控制器,主要管理有层级关系的控制器

从上一级推到下一级的方法我们用push这个方法,navigationController这个属性,可以找到当前这个视图控制器由哪个导航控制器控制的。
[self.navigationController pushViewController:seVC animated:NO];
//放回根视图控制器的界面用这个方法
[self.navigationController popToRootViewControllerAnimated:NO];
//先找到导航控制器,导航控制器有一个非常重要的属性,viewControllers,它是存储导航控制器所有子视图控制器的一个数组集合,通过下标0可以找到导航控制器的根视图控制器,然后作为目标对象,pop回去。
//推回上一页面
 [self.navigationController popViewControllerAnimated:NO];

#import "AppDelegate.h"
#import "RootViewController.h"
 RootViewController *rootVC = [[RootViewController alloc] init];    
    //导航控制器是一个容器视图控制器,主要控制具有层级关系的视图控制器。
    //创建导航控制器对象的时候 必须指定一个根视图控制器给他管理。
    //类似于登录注册找回三个子控制器和根控制器的rootVC 与 loginVC 的关系    
    UINavigationController *naVC = [[UINavigationController alloc] initWithRootViewController:rootVC];    
    //window的根视图控制器是导航控制器,而导航控制器也有一个根视图控制器,是rootVC
    self.window.rootViewController = naVC;    
    [rootVC release];    
    [naVC release];

属性传值

谁接受值 谁写属性

属性传值,一般用于前面的界面传到后面的界面 这种情况下用属性传值比代理传值方便,给对象创建一个属性用来传递就可以实现了.

传值

代理传值

谁传值谁加代理(代理接收方,并不一定是传值的那个变量,可以理解为 代理某 执行 某方法),谁代理谁加协议,谁接收值就要接收协议

//ThirdViewController.h
@interface ThirdViewController : UIViewController<FourthViewControllerDelegate>
@property (nonatomic, retain) UILabel *label;
@property (nonatomic, retain) UIButton *intoBt;
@end

//ThirdViewController.m
- (void)sendTFValueToThird:(NSString *)str
{
    _label.text = str;
}
- (void)intoView
{
    FourthViewController *fourVC = [[FourthViewController alloc] init];
    //属性传值
//    fourVC.l = _label;
    //代理传值  在从第三页推向第四页的时候第四页接受代理
    fourVC.delegate = self;
    
    [self.navigationController pushViewController:fourVC animated:NO];
    
    [fourVC release];
}


//FourthViewController.h
//增加协议
@protocol FourthViewControllerDelegate <NSObject>
- (void)sendTFValueToThird:(NSString *)str;
@end
@interface FourthViewController : UIViewController
@property (nonatomic, retain) UITextField *tf;
@property (nonatomic, retain) UIButton *bt;
@property (nonatomic, assign) id<FourthViewControllerDelegate> delegate;
@end

小技巧

怎么像safari一样滑动的时候隐藏navigationbar?

navigationController.hidesBarsOnSwipe = Yes

怎么把我的navigationbar弄成透明的而不是带模糊的效果?

[self.navigationBar setBackgroundImage:[UIImage new]
                         forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;
 posted on 2015-04-30 08:32  ianhao_cn  阅读(494)  评论(0编辑  收藏  举报