任务: 我有一个推动模态视图的导航控制器,称为登录。此登录视图有一个按钮,用于推送另一个模态视图,称为注册。如果用户注册了注册模式,则应忽略登录模式。我在登录视图中创建了一个nsnotification,它等待来自注册提交操作的帖子。
问题登录会收到通知,但不会关闭登录视图。我知道该方法运行,因为NSLog会触发。
登录viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismiss) name@"SignedUp" object nil];
登录解雇
NSLog(@"Dismiss"); // this fires
[self dismissModalViewControllerAnimated: YES];
注册方法(儿童控制器)
[self dismissModalViewControllerAnimated: YES];
[[NSNotificationCenter defaultCenter] postNotificationName:@"SignedUp" object:[self parentViewController]];
我在注册方法
中调用dismiss之后也尝试了这个[self.parentViewController dismissModalViewControllerAnimated:YES];
编辑我没有推动这些控制器。我正在使用presentModalViewController
答案 0 :(得分:1)
如果你打算解散整个堆栈,为什么一次解雇一个?这可能不是通知的问题。你可以使用
弹出整个堆栈[[[self parentViewController] parentViewController] dismissModalViewControllerAnimated:YES];
然后,如果您想再次显示它,请再次将其设为presentModalViewController
。
我相信你可以通过https://stackoverflow.com/search?q=Dismiss+multiple+modal+controllers
获得大量输入答案 1 :(得分:0)
您如何呈现模态视图?我问的原因是你说的是“推动模态视图的导航控制器”。
如果您使用的是pushViewController:animated:
,那么它不是模态视图,您需要使用popViewControllerAnimated:
让它再次消失。