2010-09-16 178 views
0

我正在開發一個應用程序,但尚未得到最佳的導航流程工作。iPhone視圖策略

爲了讓您瞭解我的應用程序的結構,我有一個主視圖,允許用戶啓動新遊戲或查看高分。在遊戲結束時,我想讓用戶可以選擇查看高分或返回主菜單 - 我有一個遊戲來看這個。

層次結構看起來是這樣的:

Main View 
| 
+--Game View 
| | 
| +--Game Over View 
|  | 
|  +--High Scores View 
| 
+--High Scores View 

我使用presentModalViewController方法從遊戲欣賞到遊戲結束視圖切換。這很好,但是當我想回到主視圖時,我有兩層視圖可以瀏覽(我想通過視圖關閉遊戲,遊戲視圖直接返回到主視圖)。要關閉視圖,我正在使用dismissModalViewControllerAnimated,但這不適用於遍歷多個視圖。有沒有辦法替換當前的模型視圖,而不是在頂部打開一個新視圖?

我希望這是有道理的。請讓我知道你是否需要更多的細節。

在此先感謝您的幫助。

艾倫

+0

標題中有一個錯字... – 2010-09-16 20:30:39

+0

謝謝艾哈邁德。固定。 – 2010-09-16 20:38:53

回答

1

除了Alexsander的偉大建議,你可以完全避免使用presentModelViewController:animated:。相反,只需設置活動UIWindowrootViewController屬性。

aViewController設置爲rootViewController後,請致電[aViewController.view becomeFirstResponder];以使其能夠響應觸摸輸入。


如果presentModelViewController:animated:是像調用一個方法,設置rootViewController是像一個goto。我認爲在這裏可能更合適一個「goto」,因爲視圖可以呈現的順序的循環性質:

主視圖 - >遊戲視圖 - >遊戲結束視圖 - >主視圖 - >遊戲視圖 - >遊戲結束 - >等。

+0

非常感謝Jon,這非常接近。我現在可以直接從遊戲中查看主視圖。但是,我的按鈕中沒有任何按鈕在主視圖上工作了(最初工作時)。有什麼我需要做的,使視圖正常活動? – 2010-09-17 20:07:09

+0

我剛剛編輯了我的答案以迴應您的評論;見第二段。 – AlcubierreDrive 2010-09-17 20:49:18

+0

謝謝喬恩。現在正在工作。非常感激。 – 2010-09-18 12:33:19

1

如果你的根視圖控制器上調用-dismissModalViewController:animated:,這將消除這兩個層。

+0

謝謝Alexsander。這有效,但你可以在轉到根視圖之前簡要地看到中間視圖。有沒有辦法避免這種情況? – 2010-09-16 20:07:02

+0

我不確定。對不起...... – 2010-09-16 23:00:48

0

這並不高雅,但永遠不會看到中間視圖的一種方法是在每件事物下都有一個轉換視圖(某種默認視圖或閃屏)。然後讓所有您想要交換的視圖都將自己退回到過渡視圖,並根據某種下一狀態邏輯,讓過渡視圖控制器呈現下一個要顯示的模式視圖。你永遠不會超過1張視圖,所以不會有任何中間視圖被看到。