当呈现的 ViewController 被关闭时收到通知

Get notified when a presented ViewController is dismissed

我正在使用 presentViewController 展示 ViewController。当呈现的 ViewController 自行消失时,我需要执行一些操作。目前,我为呈现ViewController定义了一个协议,并在呈现ViewController中调用dismissViewControllerAnimated的完成块中的相应方法。有没有更直接的方法?

您可以使用委托并让委托在调用 dismissViewController 之前执行适当的方法,使用 unwind segue 而不是 dismissViewController,或者按照您当前的方式进行操作。如果您希望操作 运行 在 之后立即 呈现的视图控制器自行关闭,这听起来像是您在做正确的事情;这就是 dismissViewController 中存在完成块的原因。使用委托意味着操作将 运行 立即 呈现的视图控制器被解雇之前。

我认为使用委托是最好的方法。但是您仍然可以在 class NSNotificationCenter 的帮助下使用其他替代方法。

您可以 register/add 您的 VC 的观察者通知(其父视图 VC 当前 VC)

[[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(myVCDismissNotification:) 
        name:@"MyVCDismissNotification"
        object:nil];

在同一个方法中定义方法class(每当通知发布时它都会被调用)

-(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 Docs。快乐编码。