在 Objective-C (iPhone) 中卸载视图
Posted
技术标签:
【中文标题】在 Objective-C (iPhone) 中卸载视图【英文标题】:Unloading a View in Objective-C (iPhone) 【发布时间】:2012-01-28 02:27:49 【问题描述】:我有一个基于视图的应用程序。加载的第一个视图有一个按钮,该按钮使用以下代码加载另一个视图:
AddPost *addView = [[AddPost alloc] initWithNibName:@"AddPost" bundle:nil];
addView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:addView animated:YES];
我想做的是在视图 (AddPost) 上提供一个按钮,让我关闭它并返回到原始视图。我该怎么做?
【问题讨论】:
【参考方案1】:看起来有点奇怪,但实际上可以调用 addView:
[self dismissModalViewControllerAnimated:YES];
来自文档:
"父视图控制器负责关闭它使用 presentModalViewController:animated: 方法呈现的模态视图控制器。但是,如果您在模态视图控制器本身上调用此方法,模态视图控制器会自动将消息转发给它的父视图控制器。”
【讨论】:
【参考方案2】:康拉德给出的答案将非常有效。以稍微更好的封装的名义,您可以在 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];
希望一切顺利。如果您有任何进一步的问题,请回帖:)
【讨论】:
以上是关于在 Objective-C (iPhone) 中卸载视图的主要内容,如果未能解决你的问题,请参考以下文章
如何用 Objective-C 判断 iPhone 是不是连接到 wifi 网络?
使用 Objective-C 在 iPhone 上禁用 WIFI
在 Objective-C (iphone) 中,如何管理“@protocol”引用的内存?
在 iPhone 的 Objective-C 中在 (commitEditingStyle) 之外调用 (deleteRowsAtIndexPaths)