在IOS开发中,委托协议(deletate)是一个很常用的技术,通常用来实现两个Controller之间的值的传递,那么具体是如何传递的呢?这里举例说明如下:
假如现在有两个ViewController: A_ViewController和B_viewController:
(1)定义委托协议
我们可以定义协议如下:
******************************************************************************************
@protocol TransValueDelegate <NSObject> //定义一个委托协议
-(void) transValue:(参数类型 *) param; // 委托的内容(函数)
@end
*****************************************************************************************
这里要注意的是,在协议中列出的方法是没有实现的,这就相当于我们为手表行业建立了一个协议(标准),在改协议下,有对手表生产方法的声明,但是具体如何生产(如型号,尺寸)应该有接受委托方来做。
(2)实现委托协议中的方法
假如A_ViewController接受了这个委托,则A_ViewController就要遵照协议,进行方法订制。
#interface A_viewController:UIViewController<TransValueDelegate > //遵照协议办事
然后是具体实现:
-(void)transValue:(参数类型 *) param{
....//传值实现
}
(3)具体应用
假如现在B_ViewController想委托A_ViewController来实现传值,那么如何做呢?
首先,要在B_ViewController中声明一个NSobject对象,并遵守TransValueDelegate 协议:
@propertry (nonatomic, assign) NSObject<TransValueDelegate > *delegate;
然后利用delegate去调用传值函数,进行传值操作
[self.delegate transValue:param ];
通过以上步骤便可实现不同对象之间的相互传值。