zoukankan      html  css  js  c++  java
  • UINavigationController 代理传值 属性传值

    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;
    
    On the road。。。
  • 相关阅读:
    maven学习讲解
    《Struts2.x权威指南》学习笔记2
    《Struts2.x权威指南》学习笔记1
    【转】Maven3把命令行创建的web工程转成Eclipse和IntelliJ Idea的工程
    [转]h5页面测试总结
    《零成本实现Web性能测试:基于Apache JMeter》读书笔记
    《软件性能测试过程详解与案例剖析》读书笔记
    手机屏幕尺寸测试——手机的实际显示页面的宽度
    web常识
    vue 生命周期
  • 原文地址:https://www.cnblogs.com/ianhao/p/4467951.html
Copyright © 2011-2022 走看看