界面二的.m文件
// 制定协议
import@protocol WTwoViewControllerDelegate
// 声明协议方法
-(void)changeValue:(NSString *)value;
@end
@interface WTwoViewController : UIViewController
// 声明一个Block类型的属性
@property (nonatomic, unsafe_unretained) iddelegate;
// 声明一个UITextField类型的全局变量*txtValue
@property (nonatomic, strong) IBOutlet UITextField *txtValue;
// 声明Button的点击事件方法
- (IBAction)pressChange:(id)sender;
@end
// 界面二的.h文件
- (IBAction)pressChange:(id)sender 方法中把代理派发出去,顺便把窗口给销毁,
代码如下:- (IBAction)pressChange:(id)sender {
// 代理传值
[self.delegate changeValue:self.txtValue.text];
[self dismissViewControllerAnimated:YES completion:nil];
}
界面二中的设置已经完成,接下要在界面一中调用界面二的头文件,并实现界面二协议中所制定的方法。
首先在WViewController.h中实现代理,
代码如下:
#import "WTwoViewController.h" // 包含头文件
// 声明方法
@interface WViewController : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *lblValue;
- (IBAction)pressCasting:(id)sender;
@end
其在WViewController.m的
- (IBAction)pressCasting:(id)sender 方法中调用WTwoViewController,
并设置代理的回调方法,代码如下:
- (IBAction)pressCasting:(id)sender {
WTwoViewController *controller = [[WTwoViewController alloc]initWithNibName:@"WTwoViewController" bundle:nil];
controller.delegate = self;
[self presentViewController:controller animated:YES completion:nil];
}
- (void)changeValue:(NSString *)value{
// 改变UILabel的值
self.lblValue.text = value;
}