iOS开发 使用Block实现两个页面互相传值
2015-09-05 11:30
651 查看
RootViewController.m里
#import "RootViewController.h"
#import "SecondViewController.h"
@interface RootViewController ()
@property(nonatomic,
retain)UITextField *textField;
@property(nonatomic,
retain)UILabel *label;
@end
@implementation RootViewController
- (void)dealloc
{
[_label
release];
[_textField
release];
[super
dealloc];
}
- (void)viewDidLoad {
[super
viewDidLoad];
// Do any additional setup after loading the view.
_label = [[UILabel
alloc]initWithFrame:CGRectMake(100,
200, 100,
30)];
_label.text =
@"YES";
[self.view
addSubview:_label];
_textField = [[UITextField
alloc]initWithFrame:CGRectMake(100,
100, 200,
30)];
_textField.borderStyle =
UITextBorderStyleRoundedRect;
[self.view
addSubview:_textField];
UIButton *button = [UIButton
buttonWithType:UIButtonTypeSystem];
button.frame =
CGRectMake(100,
300, 100,
30);
[button setTitle:@"OK"
forState:UIControlStateNormal];
[button addTarget:self
action:@selector(didClick:)
forControlEvents:UIControlEventTouchUpInside];
[self.view
addSubview:button];
}
- (void)didClick:(UIButton *)button
{
SecondViewController *secondVC = [[SecondViewController
alloc]init];
[self.navigationController
pushViewController:secondVC
animated:YES];
secondVC.myblock = ^(NSString *string){
_label.text = string;
};
secondVC.passValue = ^(UILabel *label)
{
label.text =
self.textField.text;
};
[secondVC release];
}
@end
SecondViewController.h里
#import <UIKit/UIKit.h>
typedef void(^returnBlock)(NSString *);
typedef void(^passvalueBlock)(UILabel *);
@interface SecondViewController :
UIViewController
@property(nonatomic,
copy)returnBlock myblock;
// 第二个页面传给第一个页面
@property(nonatomic,
copy)passvalueBlock passValue;
// 第一个页面传给第二个页面
@end
SecondViewController.m里
#import "SecondViewController.h"
@interface SecondViewController ()
@property(nonatomic,
retain)UITextField *textField;
@property(nonatomic,
retain)UILabel *label;
@end
@implementation SecondViewController
- (void)dealloc
{
[_label
release];
[_textField
release];
[super
dealloc];
}
- (void)viewDidLoad {
[super
viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor
whiteColor];
_label = [[UILabel
alloc]initWithFrame:CGRectMake(50,
200, 100,
30)];
self.passValue(_label);
[self.view
addSubview:_label];
_textField = [[UITextField
alloc]initWithFrame:CGRectMake(50,
100, 200,
30)];
_textField.borderStyle =
UITextBorderStyleRoundedRect;
[self.view
addSubview:_textField];
UIButton *button = [UIButton
buttonWithType:UIButtonTypeSystem];
button.frame =
CGRectMake(50,
300, 100,
30);
[button setTitle:@"OK"
forState:UIControlStateNormal];
[self.view
addSubview:button];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super
viewWillDisappear:animated];
self.myblock(self.textField.text);
}
#import "RootViewController.h"
#import "SecondViewController.h"
@interface RootViewController ()
@property(nonatomic,
retain)UITextField *textField;
@property(nonatomic,
retain)UILabel *label;
@end
@implementation RootViewController
- (void)dealloc
{
[_label
release];
[_textField
release];
[super
dealloc];
}
- (void)viewDidLoad {
[super
viewDidLoad];
// Do any additional setup after loading the view.
_label = [[UILabel
alloc]initWithFrame:CGRectMake(100,
200, 100,
30)];
_label.text =
@"YES";
[self.view
addSubview:_label];
_textField = [[UITextField
alloc]initWithFrame:CGRectMake(100,
100, 200,
30)];
_textField.borderStyle =
UITextBorderStyleRoundedRect;
[self.view
addSubview:_textField];
UIButton *button = [UIButton
buttonWithType:UIButtonTypeSystem];
button.frame =
CGRectMake(100,
300, 100,
30);
[button setTitle:@"OK"
forState:UIControlStateNormal];
[button addTarget:self
action:@selector(didClick:)
forControlEvents:UIControlEventTouchUpInside];
[self.view
addSubview:button];
}
- (void)didClick:(UIButton *)button
{
SecondViewController *secondVC = [[SecondViewController
alloc]init];
[self.navigationController
pushViewController:secondVC
animated:YES];
secondVC.myblock = ^(NSString *string){
_label.text = string;
};
secondVC.passValue = ^(UILabel *label)
{
label.text =
self.textField.text;
};
[secondVC release];
}
@end
SecondViewController.h里
#import <UIKit/UIKit.h>
typedef void(^returnBlock)(NSString *);
typedef void(^passvalueBlock)(UILabel *);
@interface SecondViewController :
UIViewController
@property(nonatomic,
copy)returnBlock myblock;
// 第二个页面传给第一个页面
@property(nonatomic,
copy)passvalueBlock passValue;
// 第一个页面传给第二个页面
@end
SecondViewController.m里
#import "SecondViewController.h"
@interface SecondViewController ()
@property(nonatomic,
retain)UITextField *textField;
@property(nonatomic,
retain)UILabel *label;
@end
@implementation SecondViewController
- (void)dealloc
{
[_label
release];
[_textField
release];
[super
dealloc];
}
- (void)viewDidLoad {
[super
viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor
whiteColor];
_label = [[UILabel
alloc]initWithFrame:CGRectMake(50,
200, 100,
30)];
self.passValue(_label);
[self.view
addSubview:_label];
_textField = [[UITextField
alloc]initWithFrame:CGRectMake(50,
100, 200,
30)];
_textField.borderStyle =
UITextBorderStyleRoundedRect;
[self.view
addSubview:_textField];
UIButton *button = [UIButton
buttonWithType:UIButtonTypeSystem];
button.frame =
CGRectMake(50,
300, 100,
30);
[button setTitle:@"OK"
forState:UIControlStateNormal];
[self.view
addSubview:button];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super
viewWillDisappear:animated];
self.myblock(self.textField.text);
}
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- ios通过按钮点击异步加载图片
- 加载带有手势识别器的XIB文件需注意哪些问题
- 仅需几行代码实现方便易用的状态栏指示器