ios block外怎么调用block中的值
1个回答
展开全部
准备工作的界面截图如下图所示。
现在的block传值是从后往前传值和代理差不多,所以,现在我们在
SecondViewController.h文件中定义block
再@interface上面重新定义block
typedef void (^ReturnTextBlock)(NSString *showText);
然后声明block属性
@property (nonatomic, copy) ReturnTextBlock returnTextBlock;
然后写一个方法,这个方法第一个界面会用到。
- (void)returnText:(ReturnTextBlock)block;
SecondViewController.h文件中就写这些了,我们再到SecondViewController.m
文件中
再.m文件中,我们先实现.h中声明的方法
- (void)returnText:(ReturnTextBlock)block {
self.returnTextBlock = block;
}
这个方法是,把block赋值给我们新创建的,未实例化得returnTextBlock
然后在视图将要消失的时候,我们把值传给第一个界面
- (void)viewWillDisappear:(BOOL)animated {
if (self.returnTextBlock != nil) {
self.returnTextBlock(self.pa.text);
}
}
第二个界面的工作,就这么完成了,我们转到第一个界面。
首先引用第二个界面
然后把,textfild和button都映射到.m文件中,映射后的结果如图所示。
然后我们实现跳转(button)的点击事件,
- (IBAction)tiaozhuan:(UIButton *)sender {
SecondViewController *sec = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"a"];
[sec returnText:^(NSString *showText) {
self.pass.text = showText;
}];
[self.navigationController pushViewController:sec animated:YES];
}
在点击事件中添加
SecondViewController *sec = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"a"];
[sec returnText:^(NSString *showText) {
self.pass.text = showText;
}];
[self.navigationController pushViewController:sec animated:YES];
SecondViewController *sec = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"a"];
这句话是获取SecondViewController。
[sec returnText:^(NSString *showText) {
self.pass.text = showText;
}];
这句话是,调用方法returnText:并传值为
^(NSString *showText) {
self.pass.text = showText;
}
传的这个block,就赋值给了第二个界面的self.returnTextBlock。
然后
[self.navigationController pushViewController:sec animated:YES];
跳转到第二个界面。
运行结果为。
现在的block传值是从后往前传值和代理差不多,所以,现在我们在
SecondViewController.h文件中定义block
再@interface上面重新定义block
typedef void (^ReturnTextBlock)(NSString *showText);
然后声明block属性
@property (nonatomic, copy) ReturnTextBlock returnTextBlock;
然后写一个方法,这个方法第一个界面会用到。
- (void)returnText:(ReturnTextBlock)block;
SecondViewController.h文件中就写这些了,我们再到SecondViewController.m
文件中
再.m文件中,我们先实现.h中声明的方法
- (void)returnText:(ReturnTextBlock)block {
self.returnTextBlock = block;
}
这个方法是,把block赋值给我们新创建的,未实例化得returnTextBlock
然后在视图将要消失的时候,我们把值传给第一个界面
- (void)viewWillDisappear:(BOOL)animated {
if (self.returnTextBlock != nil) {
self.returnTextBlock(self.pa.text);
}
}
第二个界面的工作,就这么完成了,我们转到第一个界面。
首先引用第二个界面
然后把,textfild和button都映射到.m文件中,映射后的结果如图所示。
然后我们实现跳转(button)的点击事件,
- (IBAction)tiaozhuan:(UIButton *)sender {
SecondViewController *sec = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"a"];
[sec returnText:^(NSString *showText) {
self.pass.text = showText;
}];
[self.navigationController pushViewController:sec animated:YES];
}
在点击事件中添加
SecondViewController *sec = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"a"];
[sec returnText:^(NSString *showText) {
self.pass.text = showText;
}];
[self.navigationController pushViewController:sec animated:YES];
SecondViewController *sec = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"a"];
这句话是获取SecondViewController。
[sec returnText:^(NSString *showText) {
self.pass.text = showText;
}];
这句话是,调用方法returnText:并传值为
^(NSString *showText) {
self.pass.text = showText;
}
传的这个block,就赋值给了第二个界面的self.returnTextBlock。
然后
[self.navigationController pushViewController:sec animated:YES];
跳转到第二个界面。
运行结果为。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询