Table in WatchKit

今天來簡要介紹下Apple Watch中的Table組件屋休,以及構(gòu)建一個簡單的基于Table的Watch App臂寝。


簡介

WatchKit凳干,顧名思義彰阴,是由蘋果官方提供的用于開發(fā)Apple Watch App的框架锐帜。在WatchKit中田盈,Table組件對應于iOS中的Table View。但和Table View相比缴阎,Table有不少局限允瞧,主要體現(xiàn)在以下幾個方面:

  1. 由于Watch App通過藍牙連接來和匹配的iPhone進行交流,所以對于Table的更新應盡可能減少蛮拔,以免造成更新不及時的情況瓷式。
  2. Table對應的WKInterfaceTable類沒有使用iOS中UITableView相關(guān)的循環(huán)機制,所有的Row都會在Table展示前創(chuàng)建好语泽。因此贸典,基于性能考慮,Table的Row數(shù)量通常限制在20以內(nèi)踱卵。
  3. WatchKit中的UI組件必須在Storyboard中進行布局廊驼,且沒有AutoLayout功能,因此布局方式十分受限惋砂。
  4. Table中每一種類型的Row都必須有一個對應的Controller來進行管理妒挎,Table沒有DataSource和Delegate。

創(chuàng)建 Watch App

打開Xcode西饵,選擇Create a new Xcode project酝掩,選擇watchOS -> Application -> iOS App with WatchKit App。我將這個工程取名為WatchTable眷柔,且不勾選其它任何選項期虾,進行創(chuàng)建。創(chuàng)建后的工程結(jié)構(gòu)如下圖所示:

工程結(jié)構(gòu)

可以看到驯嘱,整個工程分為以下4塊:

  1. WatchTable文件夾對應于iOS的開發(fā)代碼镶苞。
  2. WatchTable WatchKit App文件夾包含watchOS的Storyboard。
  3. WatchTable WatchKit Extension文件夾包含watchOS的開發(fā)代碼鞠评。
  4. Products文件夾包含生成的App茂蚓。

選擇WatchKit App進行運行,既能夠在Watch Simulator中看到運行結(jié)果。


運行選項

配置 Watch App

Interface.storyboard

打開watchOS的stroyboard聋涨,拖入一個Table組件晾浴,將其Row數(shù)量設為2,在一個Row中拖入一個Label牍白,在另一個Row中拖入一個Image怠肋,并在Attributes inspector中進行相應設置,如下圖所示:

Watch 界面

Row Controller

在WatchTable WatchKit Extension文件夾下新建兩個文件淹朋,用于管理兩種不同類型的Row。選擇File -> New -> File -> watchOS -> Source -> WatchKit Class 進行創(chuàng)建钉答,選擇Subclass of為NSObject础芍,分別命名為LabelRowController和ImageRowController。

對先前在Storyboard中創(chuàng)建的兩個Row的Class分別進行設置数尿。結(jié)果如下:

設置Row Class

將Label Row中的Outlets進行連接仑性,此時LabelRowController中的代碼如下:

import WatchKit

class LabelRowController: NSObject {
    @IBOutlet var label: WKInterfaceLabel!
}

將Image Row中的Outlets進行連接,此時ImageRowController中的代碼如下:

import WatchKit

class ImageRowController: NSObject {
    @IBOutlet var image: WKInterfaceImage!
}

InterfaceController

在InterfaceController中執(zhí)行主要邏輯右蹦。首先將Table組件Outlet到InterfaceController中:

@IBOutlet var table: WKInterfaceTable!

awakeWithContext相當于iOS中的ViewDidLoad函數(shù)诊杆,在這里對Table進行setRowTypes配置。因為WatchKit的Table中何陆,每種類型的Row都有一個Controller進行控制晨汹,所以需要在Table顯示前,對所有Row進行配置贷盲。各種Row的表示用Identifier來進行區(qū)分淘这。

回到Storyboard中,將兩種Row的Identifier分別設置為LabelRow和ImageRow巩剖,如下所示:


LabelRow

ImageRow

接著铝穷,我打算設置2個LabelRow,1個ImageRow佳魔,故在awakeWithContext中添加如下代碼:

let rowArray = ["LabelRow", "LabelRow", "ImageRow"]
self.table.setRowTypes(rowArray)

for i in 0 ..< 2 {
    let cell = self.table.rowControllerAtIndex(i) as! LabelRowController
    cell.label.setText("label \(i)")
}

let cell = self.table.rowControllerAtIndex(2) as! ImageRowController
cell.image.setImage(UIImage(named: "meow"))

其中曙聂,rowArray用于控制Table中各種不同Row的排列順序。通過rowControllerAtIndex可以獲取某個index對應的row鞠鲜,以進行content配置宁脊。


運行

至此,一個非常簡單的基于Table的Watch App就構(gòu)成了贤姆。運行后結(jié)果如下圖所示:

運行結(jié)果

結(jié)語

最終Demo已經(jīng)上傳到這里朦佩,希望這篇文章對你有所幫助_

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庐氮,一起剝皮案震驚了整個濱河市语稠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖仙畦,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件输涕,死亡現(xiàn)場離奇詭異,居然都是意外死亡慨畸,警方通過查閱死者的電腦和手機莱坎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寸士,“玉大人檐什,你說我怎么就攤上這事∪蹩ǎ” “怎么了乃正?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長婶博。 經(jīng)常有香客問我瓮具,道長,這世上最難降的妖魔是什么凡人? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任名党,我火速辦了婚禮,結(jié)果婚禮上挠轴,老公的妹妹穿的比我還像新娘传睹。我一直安慰自己,他們只是感情好岸晦,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布蒋歌。 她就那樣靜靜地躺著,像睡著了一般委煤。 火紅的嫁衣襯著肌膚如雪堂油。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天碧绞,我揣著相機與錄音府框,去河邊找鬼。 笑死讥邻,一個胖子當著我的面吹牛迫靖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播兴使,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼系宜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了发魄?” 一聲冷哼從身側(cè)響起盹牧,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤俩垃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后汰寓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體口柳,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年有滑,在試婚紗的時候發(fā)現(xiàn)自己被綠了跃闹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡毛好,死狀恐怖望艺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肌访,我是刑警寧澤找默,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站场靴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏港准。R本人自食惡果不足惜旨剥,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望浅缸。 院中可真熱鬧轨帜,春花似錦、人聲如沸衩椒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毛萌。三九已至苟弛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阁将,已是汗流浹背膏秫。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留做盅,地道東北人缤削。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像吹榴,于是被迫代替她去往敵國和親亭敢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容