使用块而不是委托传回数据
Pass Data back by using blocks instead of delegate
我一直在尝试使用块来传递数据
向后发送数据
在您的 secondViewController.h 文件中声明块
@property (nonatomic, copy)void(^myBlock)(NSString *);
在任何需要从 secondViewController 的 .m 文件传递数据的地方调用块
myBlock(@"this will displayed in firstViewController");
3.import 在您的 firstViewController .m 文件中的 .h 文件上方,并将您的块定义为
secondViewController *ref =[[secondViewController alloc ]init];
ref.myBlock =^void(NSString *data)
{
self.labelOffirstviewcontroller=data;
};
而 运行 我遇到 EXC 错误访问错误 任何人都可以解决这个问题吗?
此处 [[secondViewController alloc ]init];
您正在创建一个新的视图控制器实例,因此您可以在其上设置块,但随后它未被使用并被销毁。根据显示 VC 的方式,您需要使用 prepareForSegue
或类似内容,以便在正确的实例上设置块。
VC2 通常应该在调用之前检查该块是否为 nil。
属性也应该是强者,不是copy。无论如何,ARC 都在做正确的事。
我找到了一种传递数据的方法。
secondViewController *ref =[[secondViewController alloc ]init];
ref.myBlock =^void(NSString *data)
{
self.labelOffirstviewcontroller=data;
};
这个代码应该在我们推送的地方给出viewcontroller
我一直在尝试使用块来传递数据
向后发送数据
在您的 secondViewController.h 文件中声明块
@property (nonatomic, copy)void(^myBlock)(NSString *);
在任何需要从 secondViewController 的 .m 文件传递数据的地方调用块
myBlock(@"this will displayed in firstViewController");
3.import 在您的 firstViewController .m 文件中的 .h 文件上方,并将您的块定义为
secondViewController *ref =[[secondViewController alloc ]init];
ref.myBlock =^void(NSString *data)
{
self.labelOffirstviewcontroller=data;
};
而 运行 我遇到 EXC 错误访问错误 任何人都可以解决这个问题吗?
此处 [[secondViewController alloc ]init];
您正在创建一个新的视图控制器实例,因此您可以在其上设置块,但随后它未被使用并被销毁。根据显示 VC 的方式,您需要使用 prepareForSegue
或类似内容,以便在正确的实例上设置块。
VC2 通常应该在调用之前检查该块是否为 nil。
属性也应该是强者,不是copy。无论如何,ARC 都在做正确的事。
我找到了一种传递数据的方法。
secondViewController *ref =[[secondViewController alloc ]init];
ref.myBlock =^void(NSString *data)
{
self.labelOffirstviewcontroller=data;
};
这个代码应该在我们推送的地方给出viewcontroller