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
//声明协议
@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