【发布时间】:2012-02-26 19:42:48
【问题描述】:
我(认为)我已经在 Apple 的文档和在线(这里和其他地方)中广泛研究了这个问题。但是,经过几个小时的故障排除后,我没有主意了。我的模态视图控制器拒绝在适当的时间自行关闭。
我知道模态控制器必须由呈现模态视图的控制器解除,据我所知,这就是我正在做的事情。
问题:
这是显示视图控制器的 prepareForSegue 中包含的完整代码:
if ([segue.identifier isEqualToString:@"DISCREPANCYVC"]) {
DiscrepancyViewController *destController = segue.destinationViewController;
destController.discrepancyDelegate = self;
}
模态控制器包含两个运行正常的 UIPickerView。选择器视图用于构造“classificationString”,一个 NSString。
我在模态视图上有一个“完成”按钮,按下该按钮时会调用此方法/选择器(根据我设置的协议定义):
[self.DiscrepancyDelegate didFinishWithClassification:classificationString];
didFinishWithClassification 方法出现如下:
- (void)didFinishWithClassification:(NSString *)classification {
[self dismissModalViewControllerAnimated:NO];
如果重要,协议定义为
@protocol DiscrepancyViewControllerDelegate <NSObject>
@required
- (void)didFinishWithClassification:(NSString *)aClassification;
@end
保持对当前视图的引用的属性显示为:
@property (strong, nonatomic) id <DiscrepancyViewControllerDelegate> DiscrepancyDelegate;
还有四个附加属性(强、非原子),用于容纳填充 UIPickerViews 的四个数组(每个选择器有两个组件)。
我尝试了动画和非动画解雇,但行为没有改变。
这可能是什么原因造成的?我正在使用 ARC,所以在尝试转储模式屏幕之前,我不能释放任何东西,对吗?根据我的阅读,在这种情况下 viewDidUnload() 不一定会触发(在我的情况下也不会触发)。
救命!!
谢谢,
泰德
【问题讨论】:
标签: protocols storyboard modalviewcontroller