2012-03-21 151 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];