您谈论完成块,所以我假设您不想使用委托。
在将以模态方式呈现的 viewController 中,您需要提供一个公共完成处理程序,该处理程序将在它被解除时调用。
@interface PresentedViewController : UIViewController
@property (nonatomic, strong) void (^onCompletion)(id result);
@end
然后在实现中,您需要在解雇时调用此完成块。在这里,我假设 viewController 在单击按钮时被关闭
- (IBAction)done:(id)sender
{
if (self.onCompletion) {
self.onCompletion(self.someRetrievedValue);
}
}
现在回到显示模式的 viewController 中,您需要提供实际的完成块 - 通常在您创建 viewController 时
- (IBAction)showModal;
{
PresentedViewController *controller = [[PresentedViewController alloc] init];
controller.onCompletion = ^(id result) {
[self doSomethingWithTheResult:result]
[self dismissViewControllerAnimated:YES completion:nil];
}
[self presentViewController:controller animated:YES completion:nil];
}
这将创建新的 viewController 以模态方式呈现并定义完成时需要发生的事情。