jbo*_*ook 2 iphone uinavigationcontroller modalviewcontroller ios
我还没有在谷歌或堆栈溢出上找到类似的东西......
我想要做的是同时弹出模态视图和前一个视图.例如,查看日历应用.当您在Edit
"屏幕上并选择Delete Event
"时,您将被带回日历视图.在" Edit
"画面,将其模态呈现弹出以及所述的" Event
"画面(其中用户被刚刚观看日历事件).我遇到的问题是我知道如何弹出模态视图......但是从同一UIViewController
个子类(Edit
本例中的"屏幕")中,如何弹出一个非模态的视图?
我正在考虑像往常一样弹出模态视图,然后发布NSNotification
到' Event
'(例如)屏幕的UIViewController
子类并告诉它也弹出该视图.
另一件事是,对于动画,它应该是dismissModalViewControllerAnimated
动画(向下滑动)而不是popViewControllerAnimated
动画(向左滑动).
谢谢.
另外,寻找比这更好的解决方案,这在我的情况下不起作用(至少没有popViewControllerAnimated
)
Rog*_*Rog 10
您需要使用委托模式来通知模态"父"它应该关闭模态视图控制器(动画:否)并将其自身弹出堆栈(动画:是).
这正是日历应用程序上发生的事情 - 只需注意当您确认删除事件时导航栏标题会发生什么 - 您可以看到标题快速从"编辑"更改为"事件详细信息",因为该视图正在弹出离开导航堆栈.
简而言之,如果我们在讨论日历应用程序时,在模态视图控制器中,使用以下方法创建协议didConfirmEventDeletion
:
@protocol ModalViewDelegate <NSObject>
- (void)didConfirmEventDeletion;
@end
@interface ModalViewController...
@property (nonatomic, assign) id<ModalViewDelegate> delegate;
@end
Run Code Online (Sandbox Code Playgroud)
并实施:
@implementation ModalViewController
- (void)deleteEventMethod
{
...
if ([self.delegate respondsToSelector:@selector(didConfirmEventDeletion)])
[self.delegate didConfirmEventDeletion];
}
Run Code Online (Sandbox Code Playgroud)
然后在父视图控制器中,将自己声明为模态的委托并实现didConfirmEventDeletion
:
- (void)didConfirmEventDeletion
{
[self dismissModalViewControllerAnimated:NO];
[self.navigationController popViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
PS:可能有一些拼写错误,因为我在内存中编写了这段代码...
归档时间: |
|
查看次数: |
6920 次 |
最近记录: |