Pat*_*cia 2 xcode objective-c ipad
我确实找到了这个标题的答案,我做了一些研究,但我仍然没有得到这个流程.这就是我想要发生的事情:
1)单击演示者视图上的按钮以打开模态视图.2)检索一些值并单击按钮以关闭模态视图....将值发送到presentor视图并执行方法.
我知道这就像回调一样,但我仍然无法弄清楚回调的内容.
那么,我该怎么做呢?A)在presentViewController完成块中,我应该在模态视图完成时包含要执行的演示者视图方法吗?
或者:B)在模态视图的dismissViewControllerAnimated完成块中,我应该包括在模态视图完成时执行的演示者视图方法吗?
有人可以帮我一些示例代码吗?或者至少帮助我获得将代码放入哪个块的流程?
谢谢,P
你谈到完成块,所以我假设你不想使用代理.
在将以模态方式呈现的viewController中,您需要提供一个公共完成处理程序,该处理程序在被解除时将被调用.
@interface PresentedViewController : UIViewController
@property (nonatomic, strong) void (^onCompletion)(id result);
@end
Run Code Online (Sandbox Code Playgroud)
然后在实现中,您需要在解雇时调用此完成块.这里我假设viewController在单击按钮时被解除
- (IBAction)done:(id)sender
{
if (self.onCompletion) {
self.onCompletion(self.someRetrievedValue);
}
}
Run Code Online (Sandbox Code Playgroud)
现在回到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];
}
Run Code Online (Sandbox Code Playgroud)
这将创建新的viewController,以模态方式呈现并定义完成时需要发生的事情.
| 归档时间: |
|
| 查看次数: |
5052 次 |
| 最近记录: |