ios反向传值_ios tableview反向传值 - CSDN
精华内容
参与话题
  • ios反向传值得几种方法

    千次阅读 2017-03-14 16:16:03
    #pragma mark - 反向传值 //1.代理 //主动方(第二个界面):1.创建协议及协议方法 2.设置一个代理属性 3.判断代理是否存在以及协议方法时候存在,然后再传值 //被动方:1.遵守协议 2.设置代理 3. 实现代理方法 @...

    #pragma mark - 反向传值

    1.代理

    //主动方(第二个界面):1.创建协议及协议方法 2.设置一个代理属性 3.判断代理是否存在以及协议方法时候存在,然后再传值

    //被动方:1.遵守协议 2.设置代理 3. 实现代理方法

    @protocol ShowTextDelegate <NSObject>


    @required

    -(void)showText:(NSString *)text;

    @optional

    -(UIColor *)showTextOne:(NSString *)text;


    @end


    @interface SecodViewController : UIViewController


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


    @end


    //调用代理方法

    //判断代理存在,且代理方法有响应

    if (_delegate && [_delegate respondsToSelector:@selector(showText:)]) {

        UIColor *color =[_delegate showTextOne:textField.text];

        self.view.backgroundColor = color;

    }


    @interface RootViewController ()<ShowTextDelegate>

    //建立代理关系

    svc.delegate = self;

    //实现代理方法

    -(UIColor *)showTextOne:(NSString *)text

    {

        // 找到显示文字的label

        UILabel *label = (id)[self.view viewWithTag:10];

        label.text = text;

        return [UIColor greenColor];

    }


    //主动方

    1.@property (nonatomic ,assign)id delegate;

    2.[self.delegate setValue.btn.currentTitle forKey:@"viewCtrTitle"];

    //被动方

    1.@property (nonatomic,copy) NSString *viewCtrTitle;

    2.svc.delegate = self;


    3.self.navigationitem.title = viewCtrTitle;


    2.block

    @property (nonatomic,copy)void(^block)(NSString *text);

    //2.SecodViewController要传递文字,它是需要声明block的一方

    //3.SecodViewController它声明,它调用 (这样才能传过去一个数,才叫反向传值)

    //4.声明一个属性,指向要调用的block


    /*

     1.驱动方声明一个block属性 驱动方调用block,执行block中得代码

     2.被动方要具体实现block<驱动的block属性应该指向被动方实现的block>


     */

    if (_block) {

        

        _block(textField.text);

    }


    //1.实现显示文字的功能,也就是它需要完成block的实现部分 这是第一个控制器的内容


    SecodViewController *svc = [[SecodViewController alloc]init];


    UILabel *label = (id)[self.view viewWithTag:10];


    void(^aBlock)(NSString *text) = ^(NSString *text){

        label.text = text;

    };


    //声明的block指向实现的block

    svc.block = aBlock;


    #pragma mark - block的基本使用 只有调用block才会实现block中的代码

    传入方声明block调用block,接收方实现block对传过来的值进行使用

    #warining 1.声明block  2.调用block 3.实现block


    @implementation RootViewController


    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view.

        //1.block的声明

        

        //声明一个名字为blockNameblock变量

        //-(void)funcName:(BOOL)value

        

        void(^blockName)(BOOL value,NSString *str); (这句话blockName是名字,其余的是类型)

        //2.block赋值

        blockName = ^(BOOL va1,NSString * str1){     (这是给block赋值)

            NSLog(@"%d,%@",va1,str1);

        };

        //也可以把这一步和上一步合起来写,就是声明并且赋值

        void(^blockName)(BOOL value,NSString *str) = ^(BOOL va1,NSString * str1){     (这是给block赋值)

            NSLog(@"%d,%@",va1,str1);

        };


        blockName(YES,@"调用block");                   (这是调用block)

        //声明一个带返回值的block,并给它赋值

        

        __unsafe_unretained RootViewController *rvc =self;

        NSString *(^block2)(UIColor * color) =^(UIColor * colorValue){

            

            rvc.view.backgroundColor = colorValue;

            return@"用来返回的字符串";

            

        };

        

        NSString *str = block2([UIColor greenColor]);

        NSLog(@"block返回的字符串====%@",str);

        

        //3:block作为参数

        

        void(^useBlock)(BOOL value) = ^(BOOL value)

        {

            if (value ==YES) {

                

                NSLog(@"作为参数的block");

            }

        };

        

        [self useAblock:useBlock];

        /*

         [self useAblock:^(BOOL value) {

         if (value == YES) {

         

         NSLog(@"作为参数的block");

         }

         }];

         */

        -(void)useAblock:(void(^)(BOOL value))block

        {

            if (block) {

                NSLog(@"block");

                //如果作为参数的block存在,就调用block

                block(YES);

            }

        }

        //4.block作为返回值

        void(^returnAblock)(BOOL value) = [self returnAblock];

        if (returnAblock) {

            //如果返回的block有值就调用block

            // 调用block

            returnAblock(YES);

        }

        

    }


    //作为返回值

    -(void(^)(BOOL value))returnAblock

    {

        return ^(BOOL value){

            

            NSLog(@"作为返回值的block");

        };

    }


    -(void)viewDidAppear:(BOOL)animated

    {

        [super viewDidAppear:animated];

        [self funcName:YES];

    }

    //函数的实现部分,不调用是不会执行函数中得代码的,调用才执行

    -(void)funcName:(BOOL)value

    {

        NSLog(@"调用函数");

    }


    #pragma mark - block的本质

    需要注意防止循环引用,使用__weak关键词修饰

    void test5();


    int main(int argc,const char * argv[])

    {

        test5();

        return0;

    }


    int num = 10;

    void test5()

    {

        void (^block)() = ^{

            // block内部能够一直引用全局变量

            NSLog(@"----num=%d", num);

        };

        

        num = 20;

        

        block();

    }


    void test4()

    {

        staticint age = 10;

        void (^block)() = ^{

            // block内部能够一直引用被static修饰的变量

            NSLog(@"----age=%d", age);

        };

        

        age = 20;

        

        block();

    }


    void test3()

    {

        __blockint age = 10;

        void (^block)() = ^{

            // block内部能够一直引用被__block修饰的变量

            

            NSLog(@"----age=%d", age);

        };

        

        age = 20;

        

        block();

    }


    void test2()

    {

        int age =10;

        void (^block)() = ^{

            // 普通的局部变量,block内部只会引用它初始的值(block定义那一刻),不能跟踪它的改变

            //因为block不知道这个变量什么时候被销毁,所以直接把变量的值放到那个位置,不管以后变量的死活了,但是全局变量,被static修饰的变量,被_block修饰的变量可以一直引用,就是可以跟踪变量的变化

            NSLog(@"----age=%d", age);

        };

        

        age = 20;

        

        block();

    }


    void test()

    {

        int age =10;

        void (^block)() = ^{

            // ----age=10

            NSLog(@"----age=%d", age);

        };

        block();

    }


    #pragma mark - block 传值

    //2.block

    @property (nonatomic, copy)void(^block)(NSString *text);

    //2.SecodViewController要传递文字,它是需要声明block的一方

    //3.SecodViewController它声明,它调用 (这样才能传过去一个数,才叫反向传值)

    //4.声明一个属性,指向要调用的block


    /*

     1.驱动方声明一个block属性 驱动方调用block,执行block中得代码

     2.被动方要具体实现block<驱动的block属性应该指向被动方实现的block>

     

     */

    if (_block) {

        

        _block(textField.text);

    }

    //下面这代码在第一个控制器里面

    //1.实现显示文字的功能,也就是它需要完成block的实现部分


    SecodViewController *svc = [[SecodViewController alloc]init];


    UILabel *label = (id)[self.view viewWithTag:10];


    void(^aBlock)(NSString *text) = ^(NSString *text){

        label.text = text;

    };


    //声明的block指向实现的block

    svc.block = aBlock;


    3.通知

    //   创建一个通知


    //第一种:创建通知的方法

    //A :携带对象

    //1.通知的名字

    //2.  通知携带的对象

    //3.通知携带的信息

    /*

     NSNotification *notify = [[NSNotification alloc]initWithName:@"ShowText" object:textField userInfo:nil];

     */

    //    B:携带信息

    //

    //    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:textField.text forKey:@"text"];

    //    NSNotification *notify1 = [[NSNotification alloc]initWithName:@"showtext" object:nil userInfo:infoDict];


    //获取通知中心

    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

    //    [nc postNotification:notify];

    //    [nc postNotification:notify1];


    //第二种,创建并发送一个携带对象的通知

    [nc postNotificationName:@"ShowText" object:textField.text];


    //第三种,通知中创建一个携带对象或携带信息的通知并发送

    [nc postNotificationName:@"ShowText" object:textField.text userInfo:[NSDictionary dictionaryWithObjectsAndKeys:textField.text,@"text",nil]];


    //获取通知中心

    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

    [nc addObserver:self selector:@selector(ShowFunc:) name:@"showtext" object:nil];


    -(void)ShowFunc:(NSNotification *)notify

    {

        //获取通知携带的信息

        NSDictionary *infoDict = notify.userInfo;

        UILabel *label = (id)[self.view viewWithTag:10];

        label.text = [infoDict objectForKey:@"text"];

    }


    -(void)dealloc

    {

        NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

        [nc removeObserver:self name:@"ShowText" object:nil];

        //[nc removeObserver:self];移除所有通知

    }

    总结:通知中心发送通知,通知中心接受通知,通知中心移除观察者


    4.利用KVC传值

    (在下一个界面设置上一个界面的属性值)kvc的传值方法和正向传值的方法原理都是一样的


    注意:下面的用单例和全局变量传值基本上不适用知道就好了


    5.单例

    //(1.AppDelegate)

    //保存输入的文字,保存到AppDelegate对象的属性

    AppDelegate *del = [UIApplication sharedApplication].delegate;

    del.text = textField.text;


    //整个应用程序有一个单例对象UIApplication的对象,也只有一个代理,AppDelegate的对象也只有一个

    AppDelegate *del = [UIApplication sharedApplication].delegate;

    UILabel *label = (id)[self.view viewWithTag:10];

    //读取单例属性存储的文字

    label.text = del.text;


    //(2.自定义一个单例)

    //创建单例


    //获取单例对象

    SingleTon *single = [SingleTon shareSingleTon];

    //用单例的属性保存输入的文字

    single.text = textField.text;


    //获取单例对象

    SingleTon *single = [SingleTon shareSingleTon];

    UILabel *label = (id)[self.view viewWithTag:10];

    //读取单例对象的属性值

    label.text = single.text;


    6.全局变量

    //声明一个全局变量

    NSString *text;


    //用全局变量去保存输入的文字

    text = textField.text;


    //说明text在别的文件声明的

    extern NSString *text;


    UILabel *label = (id)[self.view viewWithTag:10];

    label.text = text;



    展开全文
  • 方法一:使用target-action设计模式代码如下:(由根视图推出子视图,再由子视图推出根视图,在推出根视图时,子视图传一个color的属性给根视图,用来修改根视图的背景颜色)根视图控制器代码://.m文件 ...

    方法一:使用target-action设计模式

    代码如下:(由根视图推出子视图,再由子视图推出根视图,在推出根视图时,子视图传一个color的属性给根视图,用来修改根视图的背景颜色)

    根视图控制器代码:

    //.m文件
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        self.view.backgroundColor = [UIColor redColor];
    
        [self createButton];
    }
    
    - (void)createButton
    {
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    
        btn.frame = CGRectMake(10, 30, 300, 40);
        [btn setTitle:@"进入下一个视图控制器" forState:UIControlStateNormal];
        btn.layer.cornerRadius = 5;
    
        btn.backgroundColor = [UIColor blackColor];
    
        [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:btn];
    }
    
    - (void)btnClick
    {
        Sub1ViewController * sub1 = [[Sub1ViewController alloc]init];
    
        sub1.view.backgroundColor = [UIColor blueColor];
    
        sub1.target = self;
    
        sub1.action = @selector(changeColor:);
    
        [self presentViewController:sub1 animated:YES completion:nil];
    }
    
    - (void)changeColor:(UIColor *)color
    {
        self.view.backgroundColor = color;
    }

    子视图控制器代码:

    //.h文件
    
    @interface Sub1ViewController : UIViewController
    @property (assign,readwrite,nonatomic)id target;
    @property (assign,readwrite,nonatomic)SEL action;
    @end
    
    //.m文件
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        [self createPopToRootViewBtn];
    }
    
    - (void)createPopToRootViewBtn
    {
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    
        btn.frame = CGRectMake(10, 30, 300, 40);
        [btn setTitle:@"进入根视图控制器" forState:UIControlStateNormal];
        btn.layer.cornerRadius = 5;
    
        btn.backgroundColor = [UIColor blackColor];
    
        [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:btn];
    }
    
    - (void)btnClick
    {
        if ([_target respondsToSelector:_action])
        {
            [_target performSelector:_action withObject:[UIColor orangeColor]];
        }
        [self dismissViewControllerAnimated:YES completion:nil];
    }

    方法二:通知

    根视图控制器代码:

    //.m文件
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        self.view.backgroundColor = [UIColor redColor];
    
        [self createButton];
    
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeColor:) name:@"ChangeColor" object:nil];
    }
    
    - (void)createButton
    {
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    
        btn.frame = CGRectMake(10, 30, 300, 40);
        [btn setTitle:@"进入下一个视图控制器" forState:UIControlStateNormal];
        btn.layer.cornerRadius = 5;
    
        btn.backgroundColor = [UIColor blackColor];
    
        [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:btn];
    }
    
    - (void)btnClick
    {
        Sub1ViewController * sub1 = [[Sub1ViewController alloc]init];
    
        sub1.view.backgroundColor = [UIColor blueColor];
    
        [self presentViewController:sub1 animated:YES completion:nil];
    }
    
    - (void)changeColor:(NSNotification *)nofi
    {
        self.view.backgroundColor = [nofi.userInfo objectForKey:@"color"];
    }

    子视图控制器代码:

    //.m文件
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        [self createPopToRootViewBtn];
    }
    
    - (void)createPopToRootViewBtn
    {
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    
        btn.frame = CGRectMake(10, 30, 300, 40);
        [btn setTitle:@"进入根视图控制器" forState:UIControlStateNormal];
        btn.layer.cornerRadius = 5;
    
        btn.backgroundColor = [UIColor blackColor];
    
        [[NSNotificationCenter defaultCenter]postNotificationName:@"ChangeColor" object:self userInfo:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor orangeColor],@"color", nil]];
    
        [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:btn]; 
    }
    
    - (void)btnClick
    {
        [self dismissViewControllerAnimated:YES completion:nil];
    }

    方法三:代码块

    根视图控制器代码:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        self.view.backgroundColor = [UIColor redColor];
    
        [self createButton];
    }
    
    - (void)createButton
    {
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    
        btn.frame = CGRectMake(10, 30, 300, 40);
        [btn setTitle:@"进入下一个视图控制器" forState:UIControlStateNormal];
        btn.layer.cornerRadius = 5;
    
        btn.backgroundColor = [UIColor blackColor];
    
        [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:btn];
    }
    
    - (void)btnClick
    {
        Sub1ViewController * sub1 = [[Sub1ViewController alloc]init];
    
        sub1.view.backgroundColor = [UIColor blueColor];
    
        sub1.MyBlock = ^(UIColor * color)
        {
            self.view.backgroundColor = color;
        };
    
        [self presentViewController:sub1 animated:YES completion:nil];
    }

    子视图控制器代码:

    //.h文件
    @interface Sub1ViewController : UIViewController
    @property (copy,nonatomic,readwrite)void (^MyBlock)(UIColor * color);
    @end
    //.m文件
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        [self createPopToRootViewBtn];
    }
    
    - (void)createPopToRootViewBtn
    {
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    
        btn.frame = CGRectMake(10, 30, 300, 40);
        [btn setTitle:@"进入根视图控制器" forState:UIControlStateNormal];
        btn.layer.cornerRadius = 5;
    
        btn.backgroundColor = [UIColor blackColor];
    
        [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:btn];
    
    
    }
    
    - (void)btnClick
    {
        _MyBlock([UIColor orangeColor]);
        [self dismissViewControllerAnimated:YES completion:nil];
    }

    方法四:代理-协议

    根视图控制器代码:

    //.m文件
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        self.view.backgroundColor = [UIColor redColor];
    
        [self createButton];
    }
    
    - (void)createButton
    {
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    
        btn.frame = CGRectMake(10, 30, 300, 40);
        [btn setTitle:@"进入下一个视图控制器" forState:UIControlStateNormal];
        btn.layer.cornerRadius = 5;
    
        btn.backgroundColor = [UIColor blackColor];
    
        [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:btn];
    }
    
    - (void)btnClick
    {
        Sub1ViewController * sub1 = [[Sub1ViewController alloc]init];
    
        sub1.view.backgroundColor = [UIColor blueColor];
        sub1.delegate = self;
        [self presentViewController:sub1 animated:YES completion:nil];
    }
    
    - (void)changeColor:(UIColor *)color
    {
        self.view.backgroundColor = color;
    }

    子视图控制器代码:

    //.h文件 
    @protocol Sub1ViewControllerDelete <NSObject>
    - (void)changeColor:(UIColor *)color;
    @end
    
    @interface Sub1ViewController : UIViewController
    @property (assign,nonatomic,readwrite)id <Sub1ViewControllerDelete>delegate;
    @end
    //.m文件
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        [self createPopToRootViewBtn];
    }
    
    - (void)createPopToRootViewBtn
    {
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    
        btn.frame = CGRectMake(10, 30, 300, 40);
        [btn setTitle:@"进入根视图控制器" forState:UIControlStateNormal];
        btn.layer.cornerRadius = 5;
    
        btn.backgroundColor = [UIColor blackColor];
    
        [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:btn];
    
    
    }
    
    - (void)btnClick
    {
        [_delegate changeColor:[UIColor orangeColor]];
    
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    展开全文
  • iOS简单代理反向传值

    千次阅读 2015-10-24 16:19:45
    额,,被我弄复杂的iOS代理反向传值,看官们就将就着看吧

    第一次写博客呢,优点紧张呢,这次决定写一个代理反向传值,感觉用的地方会比较多,对于像我这样的初学者来说,一开始不是很理解,慢慢用多了,也就会有感觉的吧。。。。这次就纯代码的方式写一个简单的工程

    首先呢,创建工程,再新建一个控制器,如图

    然后呢,在AppDelegate.m文件中导入viewController.h文件



    之后便是控件的添加设置之类的,在第一个界面上添加上一个button用于进入第二个界面,和一个label用于显示回传回来的值,第二个界面上添加一个textField用于输入要回传的值,

    添加和设置控件都很简单,在第一个界面上定义属性


    然后进行懒加载button和label,在懒加载中定义他们的属性


    接着在界面中添加上两个控件


    同理在第二个界面上添加控件,并设置属性

    那么接下来就是重要的反向传值的步骤了,

    第一步,在SecondViewController.h文件中声明协议,用@class强制声明一个类型,接着声明协议,协议名字是类名加上delegate,接着再声明一个方法




    第二步就是如图,同意是在.h文件中,声明玩协议之后,进行如图的下一步,我也不知道这个怎么解释,我只知道这么用,,,作为新手我也很纳闷。。。。



    第三步就是到第一个界面中,遵守协议了,这个就很简单了


    第四步,在secondViewController.m文件中实现给textFiled添加的事件,并且添加上返回前面一页的代码


    第五步,回到第一个界面上的button添加的点击事件,


    第六步,就是传值了,

    总结的看,我还是截图给你们看吧,,,不太会说,,,很吃亏啊


    以上就是简单反向传值,,,感觉被我弄复杂了,截图什么的好麻烦,,,不过第一次写就粗糙点没关系的,以后会慢慢好起来的,话说想找个人教我用github。。就这样吧,,,写太多就全是废话了,,,,






    展开全文
  • iOS与vue交互(OC传值到Vue.js)

    千次阅读 2018-02-28 17:23:19
    1、原生调用vue.js 某个vue组件下的方法。 methods:{ hwajax:function (strings) { this.tokenString=strings; } } mounted:function () { window.hwajax ...

    1、原生调用vue.js 某个vue组件下的方法。

      methods:{
                hwajax:function (strings) {
                    this.tokenString=strings;
                }
            }
      mounted:function () {
                window.hwajax = this.hwajax;
            }
    // 页面加载完成之后调用在iOS里面调用js方法:
    - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
        NSString *jsStr = @"hwajax('lvkaike')";
        NSLog(@"%@",jsStr);
        [webView evaluateJavaScript:jsStr completionHandler:^(id _Nullable d, NSError * _Nullable error) {
            NSLog(@"%@",d);
            NSLog(@"%@",error);
        }];
    }
    展开全文
  • iOS storyboard反向传值

    2015-07-07 13:56:48
    iOS swift storyboard 反向传值,A是主界面,B是子界面,现在A跳转到B,B跳回A已经实现。A传值给B 也成功了,该如何实现B传值给A 呢? 用swift语言
  • UINavigationController 中 A push到 B ,B pop 回到 A,在 B的.h中定义Block,把要传的数据通过block参数进行传值,B中要传值的地方引用Block变量(-要传的数据-),然后pop;(1)在 A 中的 -(void)...
  • ios开发中会经常用到几个控制器之间的传值,传值可以分为正向和反向之分,反向传值在开发中经常用到的可以分为协议代理传值、Block传值还有就是暴力传值,今天先说下Block传值法的实现:  block的步骤  1:需要...
  • iOS五种页面传值方式

    千次阅读 2016-05-19 14:14:20
    方式一:属性传值 A页面的值跳转到B页面之后把值传给B页面,只需要在.h文件定义属性,A页面再跳转之前赋值给B页面的实例对象属性即可。 A页面(FirstViewController)部分代码: 在FirstViewController.m的button...
  • 本文主要介绍在不同的视图控制器之间进行传值,分为两种传值方式,正向传值比较容易,逆向传值相对于正向来说麻烦一点,需要使用代理或者是block
  • Swift 闭包(block)传值

    千次阅读 2016-04-30 12:17:45
    前面写了Swift的通知和代理的传值: ...在iOS常用的三种反向传值方式也就基本介绍完了。效果图具体使用步骤在SecondViewController里面 1.声明一个block/// 声明一个block typealias SecondViewControll
  • ios 自定义bolck以及block注意事项

    千次阅读 2015-02-09 14:50:06
    本文将介绍一下block的反向传值以及block使用的注意事项。 1.block定义 2.提供block访问接口 3.反向传值 4.接受block所传值 5.block中调用方法造成retain cycle
  • iOS NSNotification 通知传值

    千次阅读 2016-12-26 22:29:25
    通知中心传值,可以跨越多个页面传值, 一般也是从后面的页面传给前面的页面。 思路: 第三个界面的值传给第一个界面。 1. 在第一个界面建立一个通知中心, 通过通知中心,注册一个监听事件 2. 在第一个界面中,...
  • Swift Block传值

    千次阅读 2017-03-02 11:10:53
    Swift3.0来实现传值-->前后两个控制器的反向传值,这里传递了一个地址的model 第一个类 let address = MZAddressManagerViewController.init() address.orderInfo = self.orderInfo //将当前...
  • 今天我总结一下回调的方法用于两个控制器之间的反向传值。我再写一下需求:在A中有一个Label,点击空白处推出BFYController界面,BFYController中有一个TextField,点击空白处返回AFYController,并将文本框中的text...
  • iOS 各种传值方式

    千次阅读 2016-05-26 15:05:09
    正向传值: 一、利用present 的 block 块进行正向传值  RootViewController.m中:  SubViewController * svc = [[SubViewControlleralloc]init];  //svc.label.text = @"正向Block传值";  //这句是正向...
  • 微信小程序开发(十六)页面传值

    千次阅读 2017-08-31 08:26:42
    之前做iOS开发的时候就有很多页面传值的应用,什么正向传值,反向传值,跨页面传值等。实现的方式有:通知,本地储存,公开属性,代理,单例等。 那么小程序有哪些呢?小程序页面传值的方式/* * 页面传值:1.正向...
  • ios swift开发中有几种方式传值,看到简书上一篇不错的文章。 链接:http://www.jianshu.com/p/3e1173652996一.通过segue进行传值二.通过delegate进行传值三.通过Notification进行传值四.通过回调函数进行传值需求...
  • 我在代码中分析到,代理传值可以分为正向传值和反向传值(个人理解)。所谓反向传值也就是开进入主界面中label没有值,进入VCB中你会输入值之后返回主界面中就会看到在VCB中写的值。反向传值则相反,是由主控制器...
  • 第一个界面 A ,第二个界面B ,从 B 传值 给A B界面.h #import //第一步 写协议 @protocol passValueDelegate NSObject> - (void)passValue:(NSString *)stringValues; @...
  • iOS值传递

    千次阅读 2019-04-17 14:17:14
    以下传值正向传值A页面到B页面,反向传值B页面传到A页面。 1.属性传值 // A页面: SecondViewController *svc = [[SecondViewController alloc]init]; UINavigationController *nvc = [[UINaviga...
1 2 3 4 5 ... 20
收藏数 871
精华内容 348
关键字:

ios反向传值