IOS delegate代理传参

IOS开发界面之间传递参数的方式有很多种。


1、使用SharedApplication,定义一个变量来传递.

2、使用文件,或者NSUserdefault来传递

3、通过一个单例的class来传递

4、通过Delegate来传递


下面简单介绍一下使用delegate方式传参


现在有两个界面,FriendsViewController(A表示)和PersonInfoViewController(B表示),点击A界面的一个组件,传递一个参数给B界面,并在B界面实现出来。

下面是实现界面  

IOS delegate代理传参_第1张图片             IOS delegate代理传参_第2张图片



具体实现步骤:


1.在A类中声明协议:在FriendsViewController.h文件的最上边声明协议如下:

//声明协议

@protocol FriendViewCtrDelegate <NSObject>


- (void)setUserName:(NSString *)value;//用来传参的方法


@end


2.在FriendsViewController.h中声明一个委托变量

@property (nonatomic,retain)id<FriendViewCtrDelegate> friendDelegate;



FriendsViewController.h代码

#import

//声明协议

@protocol FriendViewCtrDelegate <NSObject>


- (void)setUserName:(NSString *)value;//用来传参的方法


@end

@interface FriendsViewController :UIViewController


@property (nonatomic,retain)id<FriendViewCtrDelegate> friendDelegate;


@end


3.FriendsViewController.m文件里在点击事件中设置代理

//点击一行

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

//创建B界面

        PersonInfoViewController *personVC = [[PersonInfoViewControlleralloc]init];

        //设置代理

        self.friendDelegate = personVC;

        //得到点击的内容

        NSString *strName = [[_friendsDataobjectAtIndex:[indexPathsection]]objectAtIndex:indexPath.row];

//传参

        [self.friendDelegate  setUserName:strName];

        

        personVC.title =@“详细资料";

//页面跳转

        [self.navigationControllerpushViewController:personVCanimated:YES];

    

}


4.在B界面的PersonInfoViewController.m文件中添加代理协议

@interface PersonInfoViewController ()<FriendViewCtrDelegate>

{

    NSString *_strName;//用来接受上一个界面传过来的参数

}


@end


5.实现代理函数

//=====================================================================

//                              friendDelegate

//=====================================================================

- (void)setUserName:(NSString *)value{

    _strName = value;

}


运行一下,结果如上图



源码下载:http://download.csdn.net/detail/l863784757/8422217




你可能感兴趣的:(iOS)