【发布时间】:2013-11-19 19:12:09
【问题描述】:
我的问题是我有一个主 UIViewController 允许通过它呈现其他三个 UIViewController,但我想知道是否有一种方法可以在我关闭其他三个控制器之一后通知主 UIViewController 或告诉它现在出现是由于上述控制器的解雇?
谢谢你!
【问题讨论】:
标签: ios iphone objective-c uiviewcontroller dismiss
我的问题是我有一个主 UIViewController 允许通过它呈现其他三个 UIViewController,但我想知道是否有一种方法可以在我关闭其他三个控制器之一后通知主 UIViewController 或告诉它现在出现是由于上述控制器的解雇?
谢谢你!
【问题讨论】:
标签: ios iphone objective-c uiviewcontroller dismiss
如果您的主视图控制器实现:
并且呈现的视图控制器向它发送该消息,你会知道,因为那时它可以查询以查看“presentedViewController”是什么。
【讨论】:
当您关闭三个 ViewController 中的一个时,您可以通过 NSNotification 向主 ViewController 发出信号:它们已被关闭:
NSDictionary *viewControllerInfo = @{@"ViewControllerClass" : NSStringFromClass([self class])}
[[NSNotificationCenter defaultCenter] postNotificationName:@"ViewControllerDismissed" object:nil userInfo:viewControllerInfo];
在你的主视图控制器中:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewControllerDismissed:) name:@"ViewControllerDismissed" object:nil];
并用这个方法响应:
- (void)viewControllerDismissed:(NSNotification *)notification {
NSDictionary *viewControllerInfo = [notification userInfo];
// Dictionary should be same as the one passed through the noticiation.
}
补充说明:如果您使用的是 UIStoryboard,那么您可以使用 unwind segue.
编辑:更新字典以使用 NSStringFromClass()
【讨论】: