使用块而不是委托传回数据

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