歸納筆記09:UITableView

UITableView支持的屬性

UITableView繼承了UIScrollView,它具有UIScrollView的功能,這個UIScrollView中主要封裝了UITableViewCell單元格控件,因此,UITableView默認可以對單元格進行滾動。默認狀態下,所有的UITableViewController實例被自動設爲UIScrollView委託。

我們即可在IB中將UITableView拖入界面設計文件中添加該控件,也可通過代碼創建,兩種方式本質相同。支持屬性大致如下:

(1)   Style:該屬性指定該表格的風格,它對應UITableView對象的style屬性,該屬性支持如下兩個屬性值:

1)           Plain:指定該表格使用最普通的風格。

2)           Grouped:指定該表格使用分組風格。

(2)   Separator :該屬性指定表格行之間分隔條的樣式,可配置兩個屬性:

1)           分隔條樣式。

2)           分隔條顏色

(3)   Selector:該屬性用於控制該表格的選擇風格。

(4)   Editing :該屬性用於控制當表格處於編輯狀態是否允許選擇。


簡單表格

掌握上面理論後,簡單表格開發步驟如下:

(1)              在界面佈局中添加一個UITableView控件;或通過代碼創建一個UITableView對象,並將該對象添加到應用界面中。

(2)              爲UITableView設置dataSource屬性,該屬性值必須是一個實現UITableViewDataSource協議的對象。

(3)              讓指定類實現UITableViewDataSource協議,並實現協議中兩個必須實現的方法。

默認的UITableViewCell包含三個可配置的屬性。

(1)    textLabel:該屬性是一個UILabel控件,代表該UITableViewCell顯示的標題。

(2)    detailTextLabel:該屬性是一個UILabel控件,代表該UITableViewCell顯示的詳細內容。

(3)    image:這是一個UIImage對象,代表UITableViewCell左邊的圖標。

獲取UITableView控件之後,接下來可通過如下方法訪問表格控件的表格行和分區:

(1)       -cellForRowAtIndexPath:返回該表格中NSIndexPath對應的表格行。

(2)       -indexPathForCell:獲取該表格中指定行對應的NSIndexPath。

(3)       -indexPathForRowAtPoint:返回表格中指定點所在的NSIndexPath。

(4)       -indexPathsForRowsInRect:返回表格中指定區域內所有NSIndePath組成的數組。

(5)       -visibleCells:返回表格中所有可見區域內的表格行組成的數組。

(6)       -indexPathForVisibleRows:返回該表格中所有課件區域內的表格行對應的NSIndexPath組成的數組。

也可以通過如下方法來控制表格控件的滾動:

(1)                           -scrollToRowAtIndexPath:atScrollPosition:animation:控制該表格滾動指定NSIndexPath對應的表格行的頂端、中間或下方。

(2)                           -scrollToNearestSelectedRowAtScrollPosition:animation:控制該表格滾動到選中表格行的頂端、中間或下方。


處理單元格的選中

當表格控件允許選中時,默認情況下,當用戶單擊表格的某個表格行時,系統就會選中對應的表格行。UITableView提供瞭如下屬性來配置表格的選中狀態。

(1)   allowsSelection:該屬性控制該表格是否允許被選中。

(2)   allowsMultipleSection:該屬性控制該表格是否允許多選。

(3)   allowsSelectionDuringEditing:該屬性控制該表格處理編輯狀態時是否被選中。

(4)   allowsMultipleSelectionDuringEditing:該屬性控制表格處理編輯狀態時是否允許多選。

除此之外,也可通過UITableView提供如下方法來操作表格中被選中的行:

(1)   -indexPathForSelectionRow:獲取選中表格行對應的NSIndexPath。

(2)   -indexPathForSelectionRows:獲取所有被選中表格行對應的NSIndexPath組成的數組。

(3)   -selectRowAtIndexPath:animation:scrollPosition:控制該表格選中指定NSIndexPath對應的表格行,最後一個參數控制是否滾動到被選中行的頂端、中間和底部。

(4)   -deselectRowAtIndexPath:animation:控制取消選中該表格中指定NSIndexPath對應的表格行。

如果程序需要響應表格行的選中事件,這時候需要藉助UITableView的委託對象,委託對象必須實現UITableViewDelegate對象——當UITableView表格行發生選中相關事件時,都會激發該委託對象的響應方法:

(1)   -tableView:willSelectRowAtIndexPath:當用戶將要選中表格中的某行時激發該方法。

(2)   -tableView:didSelectRowAtIndexPath:當用戶完成選中表格中的某行時激發該方法。

(3)   -tableView:willDeselectRowAtIndexPath:當用戶將要取消表格中的某行時激發該方法。

(4)   -tableView:didDeselectRowAtIndexPath:當用戶選中表格中的某行時激發該方法。


定製表格行

如果只是使用系統提供的UITableViewCell,UITableView控件的表格行只支持有限的樣式,而且每個表格行只包含textLabel、detailTextLabel、UIImageView這三個控件。

爲了自由定製控件的表格行,可通過如下方式完成:

(1)   繼承UITableView定製表格行。

(2)   使用動態單元格定製表格行,即直接在IB上設置。

(3)   利用xib文件定義表格行。



編輯表格

UITableView生成的表格控件功能十分靈活,不僅可作爲數據顯示控件,還支持對錶格行進行移動、刪除和插入等操作。

UITableView提供了editing屬性來判斷該表格控件是否處於編輯狀態,如果是返回YES,反之則NO。爲了切換表格控件的編輯狀態,UITableView提供了setEditing:animation:方法,如果第一個參數爲YES,則爲編輯狀態。

除此之外,控件還具有插入、刪除、移動表格行:

(1)   -beginUpdates:對錶格執行多個連續的插入、刪除、移動操作前,先調用該方法開始更新。

(2)   -endUpdates:當對錶格控件執行多個連續的插入、刪除移動操作後的,調用該方法提交併更新。

(3)   -insertRowsAtIndexPaths:withRowAnimation:在一個或者多個NSIndexPath處插入表格行。

(4)   -deleteRowsAtIndexPaths:withRowAnimation:刪除一個或多個NSIndexPath處的表格行。

(5)   -moveRowsAtIndexPath:將指定NSIndexPath處的表格行移動到另一個NSIndexPath處。

(6)   -insertSections:withRowAnimation:在指定NSIndexSet所包含的一個或多個分區號對應的位置插入分區。

(7)   -deleteSections:withRowAnimation:刪除指定NSIndexSet所包含的一個或多個分區號對應的分區。

(8)   -moveSection:toSection:將指定分區移動到另一個位置。

爲了動態編輯表格,必須實現UITableView對應的dataSource對象中的如下方法:

(1)   -tableView:willBeginEditingRowAtIndexPath:開始編輯某個表格行時激發該委託對象的該方法。

(2)   -tableView:didEndEditingRowAtIndexPat:當編輯完某個表格行時激發該委託對象的該方法。

(3)   -tableView:editingStyleForRowAtIndexPath:該方法的返回值決定了該表格行的編輯狀態。

 



多分區表格以及分區索引

前面介紹的表格只有一個分區,如果希望UITableViews生成的表格控件包含更多的分區,則需要dataSource對象實現更多的方法:

(1)   -numberOfSectionsInTableView:該方法的返回值決定該表格包含多少個分區。

(2)   -sectionIndexFitlesForTableView:該方法的返回值用於在表格右邊建立一列浮動的索引。

(3)   -tableView:titleForHeaderInsection:該方法的返回值決定指定分區的頁眉。

(4)   -tabelView:titleForFooterInsection:該方法的返回值決定指定分區的頁腳。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章