美文网首页
多控制器的delegate方式逆向传参

多控制器的delegate方式逆向传参

作者: YuePr | 来源:发表于2016-02-25 23:03 被阅读0次

    delegate方式逆向传参

    • 使用pushViewController方式跳转到另一个UIViewController数据流走向
      • 从当前控制器vc1--->跳转到目标控制器vc2
      • vc2中监控文本,将vc2中的数据回传到vc1展示
    • 数据传输方案
      • 使用delegate方式,让vc1成为vc2的代理,遵守vc2的代理协议,在代理方法实现中获取来自vc2的数据
    /**
    *当前控制器为vc2,此方法为vc2中一个UIBarButton的点击事件的监听
    **/
    -(void)addClickt:(UIBarButtonItem *)addClickt{
        YEPEditVC3 * editVC3 = [[YEPEditVC alloc]init];
        editVC3.delegate = self; //设定当前控制器vc1成为目标控制器vc2的代理
        [self.navigationController pushViewController:editVC animated:YES];
    
    
    #import <UIKit/UIKit.h>
    @class contactItem,YEPContactVC1,YEPEditVC2;
    /**
    * 在vc3的h文件中创建delegate
    **/
    @protocol YEPAddVCdelegate <NSObject>
    
    -(void)addVC :(YEPEditVC2 *)addVC contactItem:(contactItem *)contactItem;
    @end
    
    
    
    • 此时,在vc2中设置文本的监听事件,并调用代理方法,将所需要传递的数据进行设置
    -(IBAction)savaClickBtn:(id)sender {
     //设置需要传递的数据模型
        contactItem *item = [contactItem contactItemWith:self.phoneTextF.text andPWD:self.phoneTextF.text];
        if([self.delegate respondsToSelector:@selector(addVC:contactItem:)]) {
        //调用代理方法
            [self.delegate addVC:self contactItem:item];
        //从当前控制器啊跳转到vc1
            [self.navigationController popViewControllerAnimated:YES];
        }
    }
    
    
    
    • 则,此时点击完vc2控制器中的save按钮后,会自动将数据以item模型方式传递给vc1,编译器自动跳转到vc1的代理方法中,去做实现,则此时vc1中就有了vc2中传递的属性
    -(void)addVC:(YEPEditVC *)addVC contactItem:(contactItem *)contactItem
    {
        //把传递过来的数据添加到数组当中
        [self.contactArray addObject:contactItem ];
    
        self.title = contactItem.name;
         //刷新列表
        [self.tableView reloadData];
    
    }
    

    相关文章

      网友评论

          本文标题:多控制器的delegate方式逆向传参

          本文链接:https://www.haomeiwen.com/subject/hmtwkttx.html