2010-02-18 30 views
1

如果我的問題可能會導致瑣碎或模糊,我很抱歉。我正在使用模態顯示的視圖。爲了實現一個基於參數值的一點'場景'動畫效果,我希望達到以下行爲:如何在顯示時立即解除模態視圖(無需用戶交互)

如果值爲0,呈現的視圖將以模態方式保持顯示狀態,並允許用戶操作直到後退按鈕被按下(在這種情況下,視圖被解除)

如果值爲1,則視圖以模態方式呈現,然後立即解除視圖,並在呼叫視圖上方顯示警報視圖。

現在,我已經試圖把控上的viewDidAppear方法的價值,模態視圖控制器內這樣

- (void)viewDidAppear:(BOOL)animated { 
[super viewDidAppear:YES]; 
if (<value> == 1) { 
[self dismissModalViewControllerAnimated:YES]; 
        } 
} 

而我得到的是: 如果值是0的模式視圖撐按計劃運行

如果值爲1,模式視圖將按計劃解散,但應用程序會立即崩潰。調試器似乎表明,問題中

-[UIWindowController transitionViewDidComplete: fromView:toView] 

起來,現在的問題(S): 上午我試圖做一些嚴重違法/不可能的?

如果存在解決方案,它只是將控件移動到另一個方法?如果是,哪種方法?

或者解決方案要複雜得多?

謝謝

回答

3

可能是UIWindowController被錯誤地假設的觀點仍然是可見的viewDidAppear通知調用返回時。

嘗試使用performSelector:withObject:afterDelay:具有零延遲 - 這將控制權返回運行循環後儘快撥打所選的方法(和出UIWindowController調用堆棧):

- (void) delayedDismissOfModalViewController { 
    [self dismissModalViewControllerAnimated:YES]; 
} 

- (void) viewDidAppear: (BOOL) animated { 
    [super viewDidAppear:YES]; 

    if (<value> == 1) { 
     [self performSelector: @selector(delayedDismissOfModalViewController) 
       withObject: nil 
       afterDelay: 0]; 
    } 
} 
+0

酷!試過了,它似乎完美的工作,它教會了我一些新的東西......我印象深刻,非常感謝。 – user236739 2010-02-19 10:59:06

相關問題