IOS delegate代理传参

本文介绍了在iOS开发中,如何通过Delegate协议来实现界面(FriendsViewController和PersonInfoViewController)间的参数传递。具体步骤包括在A界面声明协议,定义委托变量,设置代理并在点击事件中调用代理方法;在B界面实现代理协议,接收参数。通过这种方式,可以有效地在不同界面之间传递数据。

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


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

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

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

4、通过Delegate来传递


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


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

下面是实现界面  

             



具体实现步骤:


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

//声明协议

@protocol FriendViewCtrDelegate <NSObject>


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


@end


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

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



FriendsViewController.h代码

#import <UIKit/UIKit.h>

//声明协议

@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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值