我使用presentViewController
呈现ViewController。当呈现的ViewController解散自己时,我需要执行一些操作。目前,我为呈现的ViewController定义了一个协议,并在所呈现的ViewController中的dismissViewControllerAnimated
的完成块中调用相应的方法。有更简单的方法吗?
答案 0 :(得分:3)
我认为使用委托是最好的方法。但是你仍然可以在NSNotificationCenter类的帮助下使用其他替代方案。
您可以为您的VC(其当前VC的父视图VC)注册/添加观察者通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(myVCDismissNotification:)
name:@"MyVCDismissNotification"
object:nil];
在同一个类中定义方法(无论何时发布通知都会收到调用)
-(void) myVCDismissNotification:(NSNotification *) notification
{
if ([[notification name] isEqualToString:@"MyVCDismissNotification"])
NSLog (@"Successfully received the Dismiss notification!");
//You can use it in your way.
}
请记住在您的父VC中使用此功能。
[[NSNotificationCenter defaultCenter] removeObserver:self];
在目前的VC中,当你解雇VC时,请调用以下方法
[[NSNotificationCenter defaultCenter]
postNotificationName:@"MyVCDismissNotification"
object:self];
有关通知的更多说明,请参阅Apple文档。快乐的编码。
答案 1 :(得分:1)
您可以使用委托并让委托在调用dismissViewController
之前执行适当的方法,使用展开segue而不是dismissViewController
,或者按照您当前的方式执行。听起来你正在以正确的方式做到这一点,如果你希望操作立即运行 所呈现的视图控制器自我解决;这就是dismissViewController
中存在完成块的原因。使用委托意味着操作将立即之前运行到所呈现的视图控制器被解雇。