【发布时间】:2012-09-21 09:49:18
【问题描述】:
我想从VC1 的实例中呈现VC2 的实例,并传递一个完成块以在VC2 自行关闭时执行。传递的完成块将是对VC1 实例的方法调用。
这样做的正确方法是什么?
虽然从 VC1 呈现 VC2 通常是:
VC2 *vc2 = [[VC2 alloc] init];
[self presentViewController:vc2 animated:YES completion: nil];
在 VC2 中
[self dismissViewControllerAnimated:YES completion: nil];
(ps 通常我会在 VC2 中像这样关闭 VC2 - 即调用协议中声明的 VC1 方法
[self.delegate dismissVC2]; // basically meaning VC1 to dismiss VC2
...但我猜 VC2 也可以自行解散 - 但是我不确定这总是可以的。
虽然在 Apple 文档中,他们仍然推荐委托方案 - 但是自我解雇也可以。
您也可以对此发表评论吗?)
我想在 VC2 中做这样的事情:
[self dismissViewControllerAnimated:YES completion: passedBlockFromVC1];
当呈现 VC2 时,以某种方式将此 passedBlockFromVC1 传递给 VC2 - 同时包含 VC1 方法。
这样做的正确方法是什么?
总之,我正在寻找一种从 VC1 呈现 VC2 的解决方案,当 VC2 get 被解除时,它会在完成时调用 VC1 方法——所有这些都无需定义协议或使用委托(我觉得这对某些人来说很麻烦在这种情况下扩展 - 但非常可靠)
这可能并推荐吗?
非常感谢!
【问题讨论】:
标签: iphone ios uiviewcontroller