我有一个基于视图的应用。加载的第一个视图有一个按钮,使用此代码加载另一个视图:
AddPost *addView = [[AddPost alloc] initWithNibName:@"AddPost" bundle:nil];
addView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:addView animated:YES];
我想要做的是在视图(AddPost)上提供一个按钮,让我关闭它并返回到原始视图。我怎么能这样做?
答案 0 :(得分:1)
看起来有点奇怪,但你实际上可以有addView调用:
[self dismissModalViewControllerAnimated:YES];
来自文档:
“父视图控制器负责解除它使用presentModalViewController:animated:方法呈现的模态视图控制器。但是,如果在模态视图控制器本身上调用此方法,则模态视图控制器会自动将消息转发给它父视图控制器。“
答案 1 :(得分:0)
康拉德给出的答案将非常有效。在更好的封装名称中,您可以在addView上放置委托协议,并让您的第一个视图实现此功能。
所以在你的addView控制器的头文件中:
@protocol addViewDelegate <NSObject>
- (void)addViewRequestDismissal;
@end
您还需要在addView控制器上正确使用外部:
@property (assign) id<addViewDelegate> delegate;
然后让你的第一个视图控制器实现这个,所以在它的.h文件中你应该有
@interface firstView : NSObject <addViewDelegate> {
}
实例化addView时,请记住设置委托:
addView.delegate = self;
在按下按钮的addView控制器中,回调:
- (void)buttonPressed {
[self.delegate addViewRequestDismissal];
}
最后在你的第一个视图中记得实现这个方法
- (void)addViewRequestDismissal {
[self dismissModalViewControllerAnimated:YES];
}
希望一切顺利。如果您还有其他问题,请回复:)