? ? ? ?可以看到,圖1中的表視圖是一個靜態(tài)表,使用我們剛剛學(xué)到的知識就可以實現(xiàn)。我們需要將表視圖分為三組,第一組有兩個單元格,每一個單元格有一個文本框,文本框有輸出口;第二組有一個單元格,其中放置一個登錄按鈕;第三組有一個單元格,其中包含標(biāo)簽控件和擴展指示器。這些工作基本上都是通過代碼實現(xiàn)的,包括每一個控件的位置、動作事件等,這是一項比較繁重的工作。幸運的是,iOS 5之后的故事板技術(shù)可以幫助我們構(gòu)建靜態(tài)表。
? ? ? ?下面我們把圖1的界面簡化一下,采用靜態(tài)表技術(shù)實現(xiàn)如圖2所示的案例。
? ? ? ?使用Single View Application模板創(chuàng)建一個名為StaticTableGroup的工程。打開Interface Builder設(shè)計界面,在View Controller Scene中刪除View Controller,然后從控件庫中拖曳一個Table View Controller到設(shè)計界面,設(shè)置界面Size Class的值為wCompact | hAny。
? ? ? ?接著選擇View Controller Scene→Table View,打開其屬性檢查器,如圖3所示,從Content下拉列表中選擇Static Cells(即靜態(tài)表),將Sections的值設(shè)為3(即3節(jié)),從Style下拉列表中選擇Grouped。
? ? ? ?然后再選擇View Controller Scene中的Section-1(選中第一節(jié)),打開它的屬性檢查器,如圖4所示,將Rows的值設(shè)為2,即該節(jié)中包含兩個單元格。我們還可以根據(jù)需要設(shè)定Header(節(jié)頭)和Footer(節(jié)腳),這里我們不設(shè)定Header和Footer。
? ? ? ?再將兩個TextField控件分別拖曳到該節(jié)中的單元格上,如圖5所示。然后設(shè)置TextField控件的屬性,打開其屬性檢查器,如圖6所示,設(shè)置Placeholder為“用戶名”,Border Style為無邊框樣式。最后,不用忘記為TextField添加Auto Layout約束。
? ? ? ?第一節(jié)中的第二個單元格是密碼,輸入的密碼需要掩碼顯示。參考第一個單元格,拖曳TextField控件并設(shè)置其屬性,然后選中Secure Text Entry復(fù)選框,如圖7所示。
? ? ? ?在靜態(tài)表的第二節(jié)中,有一個按鈕,可以按照上面的方法設(shè)定。
? ? ? ?在靜態(tài)表第三節(jié)的單元格中,有標(biāo)簽和擴展指示器,其中擴展指示器的設(shè)定如圖8所示。選擇Table View Controller Scene中的單元格,打開其屬性檢查器,從Accessory下拉列表中選擇Disclosure Indicator(擴展指示器)。
? ? ? ?最后,還要拖曳一個Label控件到單元格中,將其內(nèi)容設(shè)置為“創(chuàng)建新賬戶”。
? ? ? ?這樣整個界面就設(shè)計好了,可以與圖2的效果對比一下。要完成該案例,還需要為登錄按鈕定義動作事件,為TextField定義輸出口,這些操作與普通控件一致,這里不再贅述。
? ? ? ?我們再看看代碼部分,ViewController的代碼如下:
? ? ? ?在上述代碼中,login:方法用于響應(yīng)登錄按鈕的點擊事件,這里我們將登錄驗證規(guī)則“硬編碼”了。不知道大家是否發(fā)現(xiàn),上面的代碼沒有實現(xiàn)表視圖數(shù)據(jù)源的tableView:numberOfRowsInSection:和tableView:cellForRowAtIndexPath:方法。是的,在靜態(tài)表中可以不實現(xiàn)數(shù)據(jù)源和委托協(xié)議的方法。?
? ? ? ?關(guān)于靜態(tài)表與控制界面的布局就先介紹到這里,如果還有哪些不明白的地方,可隨時來電咨詢,百恒網(wǎng)絡(luò)專業(yè)為你解答!