2012-02-26 67 views
0

我(想)我已经在Apple的文档和在线这两个地方广泛研究了这个问题。但是,经过几个小时的故障排除后,我没有想法。我的Modal视图控制器拒绝在适当的时候自行解散。Storyboard Modal ViewController不会关闭;已经尝试了一切

我知道,模态控制器必须由提供模态视图的控制器解散,并且据我所知,这就是我正在做的。

问题:


这是包含在prepareForSegue用于呈现的ViewController的代码,将其全部:

if ([segue.identifier isEqualToString:@"DISCREPANCYVC"]) { 

    DiscrepancyViewController *destController = segue.destinationViewController; 
    destController.discrepancyDelegate = self; 
} 

模态控制器包含两个UIPickerViews,其表现正常。选择器视图用于构造NSString的“classificationString”。

我对模态的视图,一个“完成”按钮当被按下时,调用此方法/选择器(按照我已经建立协议定义):

[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()不一定会在这种情况下触发(并且它不会触发我的情况)。

帮助!!

THX,

特德

+0

尝试使用弱财产 – Slappy 2012-02-27 09:20:12

回答

0

有做一个委托协议工作所需要9个步骤。检查他们全部在我的回答here

此外,声明:“我知道模态控制器必须由提供模态视图的控制器解散”是不正确的。它被认为是很好的形式,但是你可以把dismiss语句放在模态视图控制器中,如果你没有其他的理由有一个委托,那么我会这样做,而不是忍受设置委托协议的复杂性。

+0

我已经验证了我对Wenderlich网站的所有步骤,并且它们都符合规定。我已将弃用的dismissModal调用更改为dismissViewController,但行为不变 - 屏幕仍然不会消失。还有什么可能导致屏幕持续?任何人? – NightStalker 2012-02-27 23:50:15

0

我想通了;有点。我必须有一个Outlet错误连接或某种重复连接,因为在废弃按钮和控制器,拾取器和控制器之间的所有连接并重置它们之后,它开始工作。我不知道我做了什么(现在让我发疯),但这不是一个编码问题。

建议的意见:用细齿梳去掉连接。他们可以掩盖问题而不会将自己表现为错误。

Grrrrrrr。

相关问题