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

时间:2012-01-28 02:27:50

标签: iphone objective-c view

我有一个基于视图的应用。加载的第一个视图有一个按钮,使用此代码加载另一个视图:

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

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

2 个答案:

答案 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];
}

希望一切顺利。如果您还有其他问题,请回复:)

相关问题