RootViewController.h
#import "ModalViewController.h" @interface RootViewController : UIViewController<ModalViewDelegate>
RootViewController.m
@interface RootViewController ()
@end
@implementation RootViewController {
ModalViewController *modalCtrl;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor redColor];
UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 20)];
textLabel.tag = 100;
textLabel.backgroundColor = [UIColor orangeColor];
[self.view addSubview:textLabel];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(50, 150, 100, 30);
[button setTitle:@"打开" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
modalCtrl = [[ModalViewController alloc] init];
//设置代理对象
modalCtrl.delegate = self;
}
- (void)buttonAction
{
[self presentViewController:modalCtrl animated:YES completion:NULL];
}
//实现协议方法
- (void)responseData:(NSString *)text {
UILabel *label = (UILabel *)[self.view viewWithTag:100];
label.text = text;
}
//返回文本数据 - (void)responseData:(NSString *)text; @end @interface ModalViewController : UIViewController <UITextFieldDelegate> @property(nonatomic, assign)id<ModalViewDelegate> delegate;ModalViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor greenColor];
UITextField *textFiled = [[UITextField alloc] initWithFrame:CGRectMake(50, 60, 160, 30)];
textFiled.tag = 100;
textFiled.delegate = self;
textFiled.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:textFiled];
//显示键盘
[textFiled becomeFirstResponder];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(50, 150, 100, 30);
[button setTitle:@"返回" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
//按钮点击事件
- (void)buttonAction
{
[self dismissViewControllerAnimated:YES completion:NULL];
UITextField *field = (UITextField *)[self.view viewWithTag:100];
NSString *text = field.text;
//判断代理是否实现了协议方法
if ([self.delegate respondsToSelector:@selector(responseData:)]) {
//调用协议方法
[self.delegate responseData:text];
}
}
//点击return调用的协议方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
//收起键盘
[textField resignFirstResponder];
return YES;
}
代理---视图间数据的传递:标签显示输入的内容【多个视图中】
原文地址:http://blog.csdn.net/pengyuan_d/article/details/40585041