如何一次性popup模式视图和以前的导航控制器视图?

我还没有发现任何类似于谷歌或堆栈溢出…

我想要做的是同时popup一个模态视图和前一个视图。 例如,查看日历应用程序。 当你在“ Edit ”屏幕上,select“ Delete Event ”,你将被带回日历视图。 popup的“ Edit ”屏幕以及“ Event ”屏幕(用户正在查看日历事件)。 我遇到的问题是,我知道如何popup一个模态视图…但是从同一个UIViewController子类(本例中的“ Edit ”屏幕), 如何popup一个不是模态的视图

我正在考虑像通常那样popup模态视图,然后将“ NSNotification ”发布到“ Event ”(例如)屏幕的UIViewController子类,并告诉它popup该视图。

另一件事是animation,它应该是dismissModalViewControllerAnimatedanimation(向下滑动),而不是popViewControllerAnimatedanimation(向左滑动)。

谢谢。

另外,寻找一个比这更好的解决scheme,这不工作在我的情况(至less不是与popViewControllerAnimated

您需要使用委托模式来通知模式“父”,它应该closures模式视图控制器(animation:NO),并从堆栈中popup自己(animation:是)。

这正是在日历应用程序上发生的事情 – 只要注意确认删除事件时导航栏标题会发生什么情况 – 您可以看到标题从“编辑”快速更改为“事件详细信息”,因为该视图正在popup离开导航堆栈。

所以简而言之,如果我们正在讨论日历应用程序,请在您的模式视图控制器中使用didConfirmEventDeletion方法创build一个协议:

 @protocol ModalViewDelegate <NSObject> - (void)didConfirmEventDeletion; @end @interface ModalViewController... @property (nonatomic, assign) id<ModalViewDelegate> delegate; @end 

并执行:

 @implementation ModalViewController - (void)deleteEventMethod { ... if ([self.delegate respondsToSelector:@selector(didConfirmEventDeletion)]) [self.delegate didConfirmEventDeletion]; } 

然后在你的父视图控制器中,声明自己是模态的委托并实现didConfirmEventDeletion

 - (void)didConfirmEventDeletion { [self dismissModalViewControllerAnimated:NO]; [self.navigationController popViewControllerAnimated:YES]; } 

PS:可能会有一些错别字,因为我从存储器中写下这些代码。