簡體   English   中英

為什么“現在的模態視圖控制器”?

[英]why “present modal view controller”?

只是對模態視圖控制器的使用感到好奇。 何時以及為什么要使用它們? 有指導方針嗎?

我發現示例核心數據手冊代碼創建了一個導航控制器,只是為了呈現一個模態視圖控制器。 這是為什么?

   UINavigationController *navController = [[UINavigationController alloc] 
                                                 initWithRootViewController:addViewController];

    [self.navigationController presentModalViewController:navController 
                               animated:YES];

這有功能上的原因嗎? 如果我們只是將addViewController推送到self.navigationController,它會工作嗎?

通常,您使用模態視圖控制器將用戶的注意力集中在任務上。 當您推送時,用戶處於某種導航流程中,但仍然可以輕松獲得總應用程序。 他們可能決定前進或后退,切換到中間的不同選項卡,無論如何。 當他們得到一個模態視圖控制器時,他們不能做任何這個,直到任務完成或取消(模態視圖被解除)。

請參考為什么這段代碼使用presentModalViewController? (也不是pushViewController)

是的,有指導方針。 iOS人機界面指南說:

當您需要提供完成與應用程序主要功能相關的自包含任務的能力時,請使用模態視圖。 模態視圖特別適用於需要始終不屬於主應用程序用戶界面的UI元素的多步子任務。

他們還說“讓模態任務偶爾和簡單”:

盡可能減少人們在模態環境中執行任務或提供響應的次數。 iOS應用程序應該允許人們以非線性方式與它們進行交互。 模態通過中斷人們的工作流程並強制他們選擇特定路徑來防止這種自由。

在以下情況下,模態最合適:

引起用戶注意是至關重要的。 必須完成(或明確放棄)任務以避免將用戶的數據置於模糊狀態。 人們欣賞能夠在模態視圖中完成自包含的子任務,因為上下文轉換是明確和臨時的。 但是如果子任務太復雜,人們可能會忽略他們進入模態視圖時暫停的主要任務。 當模態視圖為全屏並且包含多個從屬視圖或狀態時,此風險會增加。

保持模態任務相當短且集中。 您不希望用戶在應用程序中體驗模式視圖作為迷你應用程序。 特別警惕創建一個涉及視圖層次結構的模態任務,因為人們可能迷路並忘記如何回溯他們的步驟。 如果模態任務必須在單獨的視圖中包含子任務,請確保為用戶提供通過層次結構的單一,清晰的路徑,並避免循環。

始終提供一種明顯且安全的退出模態任務的方法。 人們應該總是能夠在他們解雇模態視圖時預測他們工作的命運。

如果任務需要模式視圖的層次結構,請確保用戶了解如果他們點擊位於頂層以下的視圖中的“完成”按鈕會發生什么。 檢查任務以確定較低級別視圖中的“完成”按鈕是否應僅完成該視圖的任務部分或整個任務。 如果可能,請避免將“完成”按鈕添加到從屬視圖,因為這可能會造成混淆。

來自Apple文檔

模態視圖控制器提供了管理應用程序流的有趣方法。 最常見的是,應用程序使用模態視圖控制器作為臨時中斷,以便從用戶獲取關鍵信息。 但是,您也可以使用模態顯示的視圖控制器在特定時間為您的應用程序實現備用接口。

模態視圖控制器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM