2012-02-23 78 views
2

我有一個基模態視圖控制器。從那裏關閉2個模態視圖控制器

FieldReportViewController *fieldReport = [self.storyboard instantiateViewControllerWithIdentifier:@"fieldReportView"]; 
[self presentModalViewController:fieldReport animated:YES]; 

,我所說的第三個視圖控制器:我再創建一個第二與

ScoutingReportViewController *scoutingReport = [self.storyboard instantiateViewControllerWithIdentifier:@"ScoutView"]; 
[self setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[self presentModalViewController:scoutingReport animated:YES]; 

現在我想要返回的第一個視圖控制器。我已經嘗試(這是當前顯示視圖控制器):

-(IBAction)doneBtn 
{ 
    //[self.parentViewController dismissModalViewControllerAnimated:YES]; //removed 

    [self dismissModalViewControllerAnimated:NO]; //added 

    [[NSNotificationCenter defaultCenter] postNotificationName:@"CloseAllModalViews" object:nil userInfo:nil]; //added 

} 
在中間/ s的視圖控制器

,我在viewDidLoad中添加觀察者:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(dismissModals:) 
              name:@"CloseAllModalViews" 
              object:nil]; 

和方法:

-(void) dismissModals:(id)sender 
{ 
    [self dismissModalViewControllerAnimated:NO]; 
} 

按下時,它什麼都不做。它不排除任何意見。

任何想法如何我可以得到這個工作?

編輯:找出它爲什麼崩潰;我忘記了我在IB中添加了一個segue到我完成的按鈕。這導致內存問題並導致崩潰。

編輯2:這將關閉兩個視圖控制器回基地/第一視圖控制器。它雖然不給我任何動畫。我可以解散當前的VC,不用動畫,並用動畫解僱中間的VC,但我在轉換之前簡單地看到了中間的VC。如果可能的話,我更喜歡從當前的VC到基本的VC。

+0

無提示在控制檯上,當你的設備上運行呢?當你構建它時,來自xcode的任何警告? – 2012-02-23 21:12:54

+0

nope,當我在ipad上運行它時,控制檯中沒有崩潰信息。我注意到xcode 4.2在崩潰時反饋的是以前的版本。 =/ – Padin215 2012-02-23 21:14:57

+0

如果你的第一個viewcontroller是一個導航控制器,你可以使用'popToRootViewControllerAnimated:'。喜歡改變它? – 2012-02-23 21:35:34

回答

0

我以前做過這個,我不得不使用UINotificationCenter關閉中間視圖。當你按你的doneBtn,發佈通知。在推動其他視圖之前,請將您的dismissModal添加爲觀察者作爲操作。如果你刪除了動畫,它應該看起來像你剛回到原始視圖。

在你看來,你想自動解散:

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(dismissModals:) 
               name:@"CloseAllModalViews" 
               object:nil]; 

將這個在您的doneBtn方法:

[[NSNotificationCenter defaultCenter] postNotificationName:@"CloseAllModalViews" object:nil userInfo:nil]; 
+0

多數民衆贊成真棒,這是行不通的。只有缺點是我沒有得到一個很好的過渡。如果我爲當前模態設置動畫,中間模態不會消除(我猜測,因爲當前模態被動態地解散,第二次解除會丟失)。我無法爲當前模態設置動畫併爲中間模態設置動畫,但是之後我會在轉換之前簡要地看到第二個模態。我無法制作任何動畫,並直接進入基本模式。我寧願有一些動畫過渡,你認爲這可能嗎? (我會用新代碼更新帖子) – Padin215 2012-02-24 15:01:54

+0

如果你想讓它們正確動畫,你可能需要添加一些延遲或時間。我承認這不是問題最優雅的解決方案,但它確實有效。如果您發現體面的解決方法,請發佈。 – 2012-02-24 16:35:21

相關問題