2013-08-04 25 views

回答

6

爲什麼和

如何比方說,視圖控制器A已經提出B和B已呈現下,在轉。

當您致電dismissViewControllerAnimated:completion:時,iOS會檢查您打電話給它的視圖控制器是否在其presentedViewController屬性中有一個子項。如果是這樣,那麼它就會解散那個控制器。因此,如果我在我們的例子中將它稱作B,它將駁回C,但是如果我在A上調用它,它將駁回B(它帶走了C)。

如果我在C上調用它,那麼它沒有孩子。那麼iOS會檢查presentingViewController屬性。如果設置了,它要求解僱其控制器。因此,如果我在C上調用它,iOS會將請求發送回B,這會關閉C.

因此,在B或C上調用該方法將拋棄C,而在A上調用該方法則拋棄B和C 。

最佳實踐

調用它B,上呈現,每一次的東西。這是

  1. 減少混亂,因爲你的存在,並且駁回將是在同一個地方,並

  2. 更長遠的保障,因爲在未來的某個時刻,你可以使C存在另一個視圖控制器(D),然後解僱會突然中斷(它會突然開始解僱D,而不是解僱自己)。

相關問題