鍍金池/ 教程/ iOS/ 界面導(dǎo)航
上下文菜單
更新記錄
文本與標(biāo)簽
使用 iOS 技術(shù)
開發(fā)您的 Watch 應(yīng)用
Watch 應(yīng)用結(jié)構(gòu)
預(yù)覽概要
界面對(duì)象
UI 概要
Tables
配置 Xcode 項(xiàng)目
圖片
通知要點(diǎn)
設(shè)置
界面導(dǎo)航
管理你的預(yù)覽界面
管理自定義 Long Look 界面

界面導(dǎo)航

對(duì)于那些不只一屏內(nèi)容的 WatchKit App 來說,你必須選擇一種在界面之間導(dǎo)航的方式。WatchKit App 支持兩種完全不一樣的導(dǎo)航方式:

  • 翻頁模式 這種方式適合那些數(shù)據(jù)模型較簡(jiǎn)單的 App ,每頁的內(nèi)容和其它頁面沒有什么關(guān)聯(lián)。翻頁模式界面包含兩個(gè)或更多的相互獨(dú)立的視圖控制器,但任何時(shí)候只有一個(gè)是可以被顯示的。App 運(yùn)行時(shí),用戶通過在屏幕上左右滑動(dòng)來切換不同的界面。在屏幕下方有小點(diǎn)來指示用戶當(dāng)前頁面所在的位置。
  • 層級(jí)模式 這種方式適合數(shù)據(jù)模型較復(fù)雜或是數(shù)據(jù)結(jié)構(gòu)有一定層級(jí)關(guān)系的 App。層級(jí)模式的一般都是基于一個(gè)根視圖控制器,在這個(gè)控制器里面你可以提供一個(gè)按鈕,點(diǎn)擊之后推出一個(gè)新的視圖控制器來顯示在屏幕上。

盡管你不能在 App 里面混合使用兩種導(dǎo)航方式,但你可以在層級(jí)模式里面使用模態(tài)視圖。模態(tài)視圖是一種打斷用戶正常瀏覽流程來要求用戶輸入或是展示信息的一種方式。在翻頁模式和層級(jí)模式中都可以使用模態(tài)視圖。模態(tài)視圖本身可以包含一個(gè)視圖控制器或是包含多個(gè)基于翻頁模式的控制器。

實(shí)現(xiàn)翻頁模式界面

通過在 App 的 Storyboard 里面創(chuàng)建從一個(gè)視圖控制器到下個(gè)視圖控制器的 next-page 類型的 segue 來設(shè)置使用翻頁模式。

在視圖控制器之間創(chuàng)建 next-page segue

  • 在 Storyboard 里面為你的每個(gè)頁面添加視圖控制器。
  • 按住 Control 鍵點(diǎn)擊 App 的主視圖控制器不放,然后拖動(dòng)到另一個(gè)視圖控制器。
  • 放開鼠標(biāo)按鍵。
  • 從 segue 類型面板選擇 “next page”類型。
  • 用同樣的方法在其它界面之間創(chuàng)建 segue。你設(shè)置 segue 的順序決定了界面上的顯示順序。

你在 Storyboard 里面定義的 segue 會(huì)在 App 啟動(dòng)的時(shí)候加載。你可以通過在程序啟動(dòng)的早期調(diào)用 reloadRootControllersWithNames:contexts: 方法來動(dòng)態(tài)設(shè)置你要顯示的頁面集。比如你可以在主視圖控制器的init方法里面調(diào)用以上方法來強(qiáng)制 WatchKit 加載其它的視圖集。

所有翻頁模式的視圖控制器都是在界面顯示之前就被創(chuàng)建并初始化好的,但一次只能顯示一個(gè)。一般來說,Watchkit 顯示初始化序列中的第一個(gè)視圖控制器。如果要改變初始顯示的頁面,在 init 或是 awakeWithContext: 方法中調(diào)用 becomeCurrentPage 方法。

用戶從一個(gè)界面導(dǎo)航到另一個(gè)界面的同時(shí),WatchKit 負(fù)責(zé)激活、取消激活相應(yīng)的視圖控制器。在切換過程中,當(dāng)前顯示的視圖控制器的 didDeactivate 方法會(huì)被調(diào)用,接著會(huì)調(diào)用下一個(gè)將要顯示的視圖控制器的 willActivate 方法。通過視圖控制器的 willActivate 方法來跟新顯示最近的數(shù)據(jù)改變。

實(shí)現(xiàn)層級(jí)模式界面

在層級(jí)模式界面,你通過 segue 告訴 WatchKit 什么時(shí)候跳轉(zhuǎn)到新的頁面,或是調(diào)用當(dāng)前視圖控制器的 pushControllerWithName:context: 方法。在 Storyboard 中你從一個(gè)視圖控制器上的一個(gè)按鈕,控件組,或是列表中的一行創(chuàng)建 push segue 到另一個(gè)視圖控制器。如果你喜歡用編程的方式實(shí)現(xiàn) push,在任意視圖控制器的 action 方法中調(diào)用 pushControllerWithName:context:

在 push 一個(gè)新的視圖控制器到屏幕上的時(shí)候,建議通過 pushControllerWithName:context: 方法的 context 參數(shù)傳入一個(gè)數(shù)據(jù)對(duì)象,通過這個(gè)對(duì)象可以新的視圖控制器在顯示之前可以獲取一些狀態(tài)信息,同時(shí)通過這個(gè)對(duì)象告訴新的視圖控制器哪些數(shù)據(jù)需要被顯示。

被 push 出來的視圖控制器會(huì)在屏幕的左上角有一個(gè) “<” 標(biāo)志來提醒用戶可以導(dǎo)航回去。當(dāng)用戶點(diǎn)擊屏幕左上角或是在屏幕上左滑,WatchKit 會(huì)自動(dòng)隱藏最上面的視圖控制器。你也可以通過調(diào)用 popController 方法來編程實(shí)現(xiàn)返回,但你不能使 App 的主視圖控制器消失。

顯示模態(tài)視圖

模態(tài)界面通常是臨時(shí)打斷用戶的正常瀏覽來提示或是顯示信息。無論你 App 用的是什么導(dǎo)航方式,都可以在任何視圖控制器上顯示模態(tài)視圖。要模態(tài)的展示一個(gè)視圖控制器,可以使用以下方法中的任意一個(gè):

創(chuàng)建一個(gè) modal segue,連接到你想要顯示的視圖控制器。如果需要用 segue 顯示多個(gè)視圖,首先用 next-page segue 把需要模態(tài)展示的視圖控制器連接在一起,這樣你就把這些視圖控制器用翻頁模式組織在一起了。再用modal segue 連接到控制器組的第一個(gè)控制器上。如果 modal segue 連接到中間的某個(gè)控制器上,那么這個(gè)控制器之前的視圖將不會(huì)顯示。

模態(tài)視圖的左上角顯示了視圖控制器的標(biāo)題。當(dāng)用戶點(diǎn)擊該標(biāo)題時(shí),Watchkit 會(huì)讓模態(tài)界面消失。因此最好設(shè)置有關(guān)閉模態(tài)界面提示意義的標(biāo)題。例如,當(dāng)顯示信息的時(shí)候,可以設(shè)置為DoneClose,如果沒有為視圖控制器設(shè)置標(biāo)題,WatchKit 默認(rèn)顯示 Cancel

上一篇:界面對(duì)象下一篇:Tables