2012-03-21 114 views
0

我有一个iOS应用程序,允许用户连接到我们的服务器并执行一些任务。它很好用,直到我决定抛出一个错误并让它返回到前一个视图控制器。我用应该执行的“segShowError”的标识符创建了一个segue,并将用户发送回父屏幕。目前,segue是Modal,从第一个控制器到第二个控制器都是一个。奇怪的是,我之前在使用push segue时遇到了同样的困难,我使用Modal来修复它。这是“应该”执行segue的代码。Segue没有被执行ios

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
if(error != nil) 
{ 
    NSLog(@"Error was %@",error); 
    return; 
} 
else if([data length] <= 0) 
{ 
    NSLog(@"No data received, going back"); 
    [self performSegueWithIdentifier:@"segShowError" sender:self]; 
} 

然后,我有一个prepareForSegue方法,这将决定送什么错误消息回父,但现在只是记录一条消息。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSLog(@"Preparing for segue"); 
} 

我的输出

2012-03-21 13:14:39.148 SSPColorImprov [17401:F803]没有数据接收,回去

2012-03-21 13:14: 39.149 SSPColorImprov [17401:f803]准备继续使用

我认为这两条消息表明segue正在执行,但我可能是错的。

没有记录错误,项目中没有警告,也没有抛出异常。任何想法可能会导致这个问题?

+0

难道我理解正确的话......你想要的SEGUE解雇模态视图控制器? – Canopus 2012-03-21 20:18:26

+0

从本质上讲是的,但我不知道这是一种选择,我想这是有道理的,虽然 – nick 2012-03-21 20:24:48

+0

好,不要急,因为你不能用dimiss赛格瑞的视图。以模态方式呈现的视图需要自行解决。我只是想要更好地理解你的问题。 – Canopus 2012-03-21 20:29:54

回答

3

要取消以模态方式呈现的视图,您需要通过调用 - dismissViewControllerAnimated:completion:而不是使用segse来解除视图。例如

// used to be dismissModalViewControllerAnimated: but deprecated in iOS 5 
[self dismissViewControllerAnimated:YES completion:nil];