UITableView,iosuitableview

來源:互聯網
上載者:User

UITableView,iosuitableview

知識點:

1)UITableView

2)UITableViewCell

 

======================================================

 

一、UITableView

 

1、UITableView介紹

UITableView為列表視圖,繼承UIScrollView

 

2、常用的屬性

1)separatorColor  分割線顏色

2)separatorStyle  分割線樣式

3)separatorInset 分割線的位置

3)rowHeight  cell的高度,預設為44

4)dataSource  資料來源代理

5)delegate  代理

 

3、複用機制

4、常用代理

//設定組的數目

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

//設定每組的cell數目

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

//設定cell的內容

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

//設定cell的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

//當點擊cell時會自動調動

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

=====================================================

 

二、UITableViewCell

 

1、UITableViewCell介紹

UITableView上每一行就是一個UITableViewCell,用來顯示不同的內容

2、cell的樣式

️. UITableViewCellStyleDefault, // 只有一個label(即textLabel正標題)在右邊,和imageView在左邊

️. UITableViewCellStyleValue1, // 兩個label,左邊的label(即textLabel正標題)字型預設為黑色並 且向靠左對齊,右邊的label字型(即detailTextLabel副標題)預設為黑色並且向靠右對齊

️. UITableViewCellStyleValue2, //兩個label,左邊的label(即textLabel正標題)字型預設為藍色並 且向靠右對齊,右邊的label字型(即detailTextLabel副標題)預設為黑色並且向靠左對齊

️.  UITableViewCellStyleSubtitle // Left aligned label on top and left aligned label on bottom with gray text (Used in iPod).上下兩個label,上邊的label(即textLabel正標題)字型預設為灰色並且向左對 齊,下邊的label字型(即detailTextLabel副標題)預設為灰色並且向靠左對齊

 

3、UITableViewCell屬性(使用cell中的系統控制項時,要注意cell的樣式,倘若沒有,就算寫了也不會顯示)

1)textLabel   標題

2)detailTextLabel  副標題

3)imageView 

4)accessoryType  右邊的圖片樣式(預設是UITableViewCellAccessoryNone)設定了樣式才會顯示

  /**

     UITableViewCellAccessoryNone 沒有樣式(預設值)

     UITableViewCellAccessoryDisclosureIndicator 箭頭

     UITableViewCellAccessoryDetailDisclosureButton 驚嘆號和箭頭

     UITableViewCellAccessoryCheckmark 打鉤

     UITableViewCellAccessoryDetailButton 驚嘆號

     */

5)selectionStyle  點擊cell時高亮效果,具體樣式如下

  /**

     UITableViewCellSelectionStyleNone 無

     UITableViewCellSelectionStyleDefault 預設,灰色

     */

6)cell的操作

刪除cell

- (void)deleteRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;

添加cell

- (void)insertRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;

移動cell

- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath

重新整理

- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

4、組頭和表頭區別

️.組頭或者組尾的顯示需要代理的實現

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

// 設定組頭或者組尾的高度才會調用viewForHeaderInSection或者viewForFooterInSection代理

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

️.UITableViewHeaderFooterView屬性

1)textLabel   標題

2)detailTextLabel  副標題

️.表頭(tableHeaderView),表頭只有一個,高度由當前建立的view決定,寬度由tableView決定

 

5、tableView其他常用代理

1)返回組頭的標題

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

 

2)返回組尾的標題

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;

3)  是否允許編輯,預設全部允許編輯

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

 

4)修改刪除按鈕上的文字

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

 

5)編輯狀態,實現這個代理就可以刪除或插入(通過判斷editingStyle的類型,做出相應的操作)

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

 

6)  // 8.0 的新代理方法

// 同時設定左劃cell時出現多個按鈕(刪除、置頂、更多)

// 如果實現了這個代理方法,內建的刪除就沒有了

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

//通過以下方法建立按鈕

+ (instancetype)rowActionWithStyle:(UITableViewRowActionStyle)style title:(nullable NSString *)title handler:(void (^)(UITableViewRowAction *action, NSIndexPath *indexPath))handler;

 

7)移動cell的代理,實現了這個代理才能移動

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

 

8)返回索引

     - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

     【備忘】UITableViewIndexSearch 搜尋的表徵圖

 

9)控制索引

    - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index

     【備忘】返回-1,什麼都不做

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.