对代理模式中代理方法实现和调用的简单了解


     这个问题是我在多界面传值的时候遇到的,第一个界面可以直接向第二个界面传值,但是,后面一个界面不能直接向前一个界面传值,这个时候想要实现第二个界面向第一个传值就需要建立一个协议,借助这个协议实现这个功能。

首先我们要明白,第二个界面需要实现这个功能,所以第二个界面需要借助协议方法,因此第二个界面是委托人,所以

第二个界面.delegate = self;


在第一个界面实现第二个界面的初始化,同时制定代理,这个时候就要在下面实现代理方法,注意,是实现,不是调用,这个时候就是重点了,在哪里制定代理,就要在哪里实现代理方法,在第一个界面的VC中实现的代理,所以,也要在第一个界面中实现代理方法。

-(void)nextvc

{

    vc = [[myViewController alloc] init];

    vc.str = self.textfiled.text;

    vc.delegate = self;//指定代理

    

    vc.modalPresentationStyle = UIModalTransitionStyleFlipHorizontal;

    [self presentViewController:vc animated:NO completion:nil];

}


//实现代理方法

-(void)chuanzhi:(NSString *)str

{

    self.textfiled.text = str;

}


在第二个界面我们就可以调用代理方法了,注意,是调用 不是实现

-(void)back

{

[self.delegate chuanzhi:self.textfiled.text];//这个是调用,不是实现,一定要搞清楚实现和调用的区别,只实现一次,可以多次调用


}


注:在第一个界面初始化第二个界面,并且指定了代理,所以也要在第一个界面实现代理方法,这样就可以在第二个界面调用代理方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值