当呈现的ViewController被解除时收到通知

时间:2015-07-06 02:05:10

标签: ios notifications presentviewcontroller

我使用presentViewController呈现ViewController。当呈现的ViewController解散自己时,我需要执行一些操作。目前,我为呈现的ViewController定义了一个协议,并在所呈现的ViewController中的dismissViewControllerAnimated的完成块中调用相应的方法。有更简单的方法吗?

2 个答案:

答案 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中存在完成块的原因。使用委托意味着操作将立即之前运行到所呈现的视图控制器被解雇。