当呈现的 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。快乐编码。
我正在使用 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。快乐编码。