切換

2009-09-11 65 views
1

場景:
1.顯示導航控制器基於視圖
2.用戶選擇選項
3.    顯示模態視圖甲
4.用戶選擇在模態視圖甲
5的另一種選擇。    隱藏模式視圖甲
6.    顯示模態視圖乙切換

// This function must show modal view A 
This scenario implemented like this: 
- (IBAction)showModalViewA:(id)sender { 
    ModalViewA *viewA = [[ModalViewA alloc] forParent:self]; 
    [self presentModalViewController:viewA animated:YES]; 
    [viewA release]; 
} 

// This function must hide modal view A and show modal view B 
- (void)didSelectOptionInViewA { 
    ModalViewB *viewB = [[ModalViewB alloc] init]; 
    viewB.peoplePickerDelegate = self; 

    [self dismissModalViewControllerAnimated:NO];   // Problem Is Here 
    [self presentModalViewController:viewB animated:YES]; 
    [viewB release]; 
} 

請看行標記爲//問題在這裏
當我設置dismissModalViewControllerAnimated:NO它工作正常。 如果此參數是那麼viewB沒有出現在屏幕上。

如何使它適用於動畫?

回答

0

動畫需要一些時間,比如0.3秒。你看不到當動畫完成後(無委託方法被髮送),所以你可以做兩件事情:

  1. 目前在一個新的方法,新模式視圖控制器,並呼籲有0.3秒的延遲該方法。這不是一個理想的解決方案,因爲動畫時間可能會有所不同,您無法確定動畫是否真的完成。
  2. 將一些標誌實例變量添加到您的主視圖控制器(呈現模式視圖控制器的那個)並將該標誌設置爲YES(或者使用位進行操作,然後一個標誌可以包含多個選項)。然後檢查 - [UIViewController viewDidAppear:]是否設置該標誌,當它是,呈現模態視圖控制器。
    1. 您可以確定動畫已完成。
    2. 呈現一個模式視圖控制器應做之內它的主視圖控制器

我真的不知道你爲什麼會想要做這樣的事情,因爲這實在是不怎麼蘋果十歲上下。您最好在舊的模態視圖中展示新的模態視圖,或者嘗試找到另一種正確解決問題的設計模式,這樣會更好。

+0

我這樣做時,圖像選擇器返回,我需要對給定的圖像採取一些行動。我不想在選取器完全解散之前開始操作,所以我更早地設置了一個標記並在'-viewDidAppear:'中檢查它。 – 2010-07-22 00:05:23