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; }
ModalViewController.h
//返回文本数据 - (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; }