使用delegate进行页面间传值
在上篇博文中所介绍的项目基础上,本文主要介绍一下如何使用委托来进行页面间参数的传递:
实际上delegate传值的实质就是:比如在AB两个页面,A想要传值给B ,就只要先在A中得到B的指针,然后将想要传的值赋给B,之后跳转。
(A代表BIDMasterViewController,B代表BIDDetailViewController)
1 首先我们要定义一个协议,此处以传递一个image为例:
@protocol BIDPassValueDelegate
-(void)setTImage:(UIImage *)image;
@end
@property(strong,nonatomic) id<BIDPassValueDelegate>passDelegate;
BIDDetailViewController *detail=[[BIDDetailViewController]BIDDetailViewController];
//设置委托的值为detail即将传值的具体实现过程委托给了B来实现(见步骤4)了,类似于设置了一个指向B的指针,于是可以在此页面A来设置B中的值,即传递了参数!
self.passDelegate=detail;
[self.passDelegate setTImage:timage]; //timage为A中的一个值
4 步骤3中的传值以及设置委托对象为B的实例还建立在B.h中要遵守上述协议,:
@interface BIDDetailViewController : UIViewController<BIDPassValueDelegate>
@property (strong, nonatomic) UIImage *image;
@end
B.m中实现协议中的方法 :-(void)setTImage:(UIImage *)image
{
self.image=image;
}