2014-06-19 59 views
-1

我有一個簡單的應用程序與2個屏幕。 當我按下一個按鈕從第一個到第二個時,一切都成功執行(包括動畫)。然而,當我點擊第二個屏幕上的後退按鈕,我得到以下警告:目的C:後退按鈕繼續不工作

Warning: Attempt to present <getTextViewController: 0x8f6aa30> on <SecondViewController: 0x946cc80> whose view is not in the window hierarchy! 

編輯:請不要參考我關於上述警告的其他問題 - 我已經看到了這些,他們指其他事宜。

但是,它仍然切換回第一個屏幕。然而,segue的動畫不能執行。 另外:當我返回到第一個屏幕時,第一個屏幕中的信息(如輸入的文本)仍然保留,而第二個屏幕中的信息每次出現時均會重置。

這是我如何調用這兩個操作:

​​

守則getTextViewController.m(查看1):

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
if([[segue identifier] isEqualToString:@"F21"]){ 
    UIViewController *v = [segue destinationViewController]; 
    [self dismissViewControllerAnimated:NO completion:nil]; 
    v = self; 

} 
} 
-(void)performSegue:(NSString*)str{ 
[self performSegueWithIdentifier:str sender:self]; 
} 
//In some other method: 
[self performSegue:@"F21"]; 

守則SecondViewController.m(查看2):

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
if([[segue identifier] isEqualToString:@"F12"]){ 
    UIViewController *v = [segue destinationViewController]; 
    [self dismissViewControllerAnimated:NO completion:nil]; 
    v = self; 

} 
} 
-(void)performSegue:(NSString*)str{ 
[self performSegueWithIdentifier:str sender:self]; 
} 
- (IBAction)goBack:(id)sender { 
[self performSegue:@"F12"]; 

} 

我非常感謝任何幫助,以理解爲什麼第一次繼續工作,而第二次沒有。

謝謝

院長

注:這裏是整個項目 - https://github.com/dean13-meet/firstIOSApp 編輯:更新飯桶。

+0

您的github項目缺少getTextViewController .h和.m文件。 – rdelmar

+0

爲什麼你甚至需要一個後退?這個功能是內置的!你得到你的錯誤信息是因爲你關閉了你的'SecondVC',然後嘗試從那個被駁回的'VC'呈現一個新的'VC'。 – Marc

+0

不要使用segue從第二個視圖控制器返回第一個視圖,並簡單地使用您已經使用的[self dismissViewControllerAnimated:NO completion:nil]方法。 – nikhil84

回答

2

我不完全確定你想要在你的prepareForSegue中做什麼,他們不需要在那裏解僱VC。如果你想有一個簡單的應用程序,你從VC1到VC2然後再回來,最好的辦法是使用segueunwindSegue

因此,在故事板控件中,從VC1上的按鈕拖動到VC2並選擇您的segue類型。然後在VC1.m設置開卷SEGUE如:

- (IBAction)unwindFromViewController:(UIStoryboardSegue *)segue 
{ 
    //empty implementation 
} 

最後,從後退按鈕您的VC2控制拖動到綠色的退出圖標上VC2並選擇您unwindFromViewController方法。

這應該做你想找的。

+0

這個工程!但是,它不保留在VC2中輸入的信息---我在VC2中有一個標籤,每次我重新輸入該視圖時,標籤都會重置其值。是否有可能使VC2在退出時保持不變?換句話說,保持相同的對象引用? –