通过delegate代理/委托模式进行viewController之间的传值

nandy007
   2013-11-16 10:51:44发布  2016-12-16 16:52:33更新 0收藏, 2504浏览
ExMobi原生扩展
0

代理模式简单打个比方就是:

甲方(ModalViewController)要做一件事情,但是自己不做或者没能力做,需要找一个人来完成,这个人就好比是代理人一样,假设甲方找到了乙方(RootViewController)来做这件事。

先明确下:下面各步骤明确是谁做的事情代码就是在对应的viewController中,不要搞混哦!

那么甲方就需要表达自己要找代理人(@protoclo),并且明确要做什么事(@optional):

@protocol ModalViewControllerDelegate <NSObject>

@optional
- (void) editLabel:(NSString *)textFiled;

@end

并且甲方要把代理这件事宣传出去让别人知道:

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

那么,如果乙方可以做这件事,就需要告诉甲方他有意愿做这个事情:

@interface RootViewController : UIViewController <ModalViewControllerDelegate>

@end

并且乙方要证明这件事他是可以做的:

- (void) editLabel:(NSString *)textFiled
{
    UILabel *label = (UILabel *)[self.view viewWithTag:100];
    
    label.text = textFiled;
}

一切就绪之后,真正的事情就可以开始了。

首先,乙方要和甲方签订合同,相当于出卖自己的能力:

modalVC.delegate = self;//这句很重要,将当前RootViewController代理给ModalViewController

这时候甲方就可以名正言顺的让乙方帮自己把事情做了:

[self.delegate editLabel:_textField.text];

如果还不是很明白的话可以下载下面的源码自己运行一下哦

ModalViewDelegate.zip(0.05M 下载次数:44)

下载APP
扫码下载栗子社区APP