在Objective-C(iPhone)中卸载视图

在Objective-C(iPhone)中卸载视图,iphone,objective-c,view,Iphone,Objective C,View,我有一个基于视图的应用程序。加载的第一个视图有一个按钮,该按钮使用以下代码加载另一个视图: AddPost *addView = [[AddPost alloc] initWithNibName:@"AddPost" bundle:nil]; addView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:addView animated:YES]; 我想

我有一个基于视图的应用程序。加载的第一个视图有一个按钮,该按钮使用以下代码加载另一个视图:

AddPost *addView = [[AddPost alloc] initWithNibName:@"AddPost" bundle:nil];
addView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:addView animated:YES];

我想做的是在视图(AddPost)上提供一个按钮,让我关闭它并返回到原始视图。我怎样才能做到这一点呢?

这似乎有点奇怪,但实际上您可以使用addView调用:

[self dismissModalViewControllerAnimated:YES];
从文档中:


父视图控制器负责取消使用presentModalViewController:animated:方法显示的模态视图控制器。但是,如果在模态视图控制器本身上调用此方法,模态视图控制器会自动将消息转发给其父视图控制器康拉德给出的答案将非常有效。以稍微更好的封装的名义,您可以在addView上放置一个委托协议,并让您的第一个视图实现它

因此,在addView控制器的头文件中:

@protocol addViewDelegate <NSObject>
    - (void)addViewRequestDismissal;
@end
@property (assign) id<addViewDelegate> delegate;
在addView控制器中,当按下按钮时,回拨:

- (void)buttonPressed {
    [self.delegate addViewRequestDismissal];
}
最后,在您的第一个视图中,请记住实现此方法

- (void)addViewRequestDismissal {
    [self dismissModalViewControllerAnimated:YES];
}
希望一切顺利。如果您有任何其他问题,请发回:)

- (void)buttonPressed {
    [self.delegate addViewRequestDismissal];
}
- (void)addViewRequestDismissal {
    [self dismissModalViewControllerAnimated:YES];
}