您的位置:首页 > 移动开发 > IOS开发

iOS:切换视图时,反向传递数据方法二:代理

2015-09-14 22:44 633 查看
代理:

  1、发送信息的控制器设置一个代理,并自定义一个代理的方法,用来传递数据

  2、接受信息的控制器遵循发送信息的控制器的协议

  3、接受信息的控制器设置发送信息的控制器的代理为自己self

  4、接受信息的控制器实现协议中的方法,即接受数据

  首先将控制器通过modal(push)方式联接,同时设置segue的identifier标识,因为这个identifier是与目的控制器唯一的识别的方式,最后再进行代码操作。


1、所有文件:



2、让FirstViewController关联自己的类ViewController(.h/.m)



3、让SecondViewController关联自己的类SecondViewController(.h/.m)



4、设置segue的identifier标识



具体代码如下:

FirstViewController控制器关联的ViewController类



#import "ViewController.h"
#import "SecondViewController.h"

@interface ViewController ()<SecondViewControllerDelegate>
@property (weak, nonatomic) IBOutlet UITextField *firstTextField;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
}

//重写该方法,视图切换时,自动调用
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"modal"])
{
//获取目的控制器
SecondViewController *secondVC = segue.destinationViewController;

//正向传数据
secondVC.information = self.firstTextField.text;

//设置代理
secondVC.delegate = self;

}
}

#pragma mark -<SecondViewControllerDelegate>
//反向接受信息
-(void)FinishedInformation:(SecondViewController *)secondVC andinfo:(NSString *)infos
{
self.firstTextField.text = infos;
}
@end


SecondViewController控制器关联的SeconViewController类



#import "SecondViewController.h"

@interface SecondViewController ()
@property (weak, nonatomic) IBOutlet UITextField *secondTextField;

@end

@implementation SecondViewController
//返回时的触发事件
- (IBAction)returnClicked:(UIBarButtonItem *)sender
{
//反向传递数据
[self.delegate FinishedInformation:self andinfo:self.secondTextField.text];

//关闭模态窗口
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
//[self dismissViewControllerAnimated:YES completion:nil];
}

- (void)viewDidLoad {
[super viewDidLoad];

// 显示文本框内容(接受传递过来的数据)
self.secondTextField.text = self.information;
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: