iOS UITableView代理方法詳解

iOS UITableView的代理方法詳解

1、補充

在上一篇博客中,http://my.oschina.net/u/2340880/blog/404605,我將IOS中tableView(表視圖)的一些經常使用方法總結了一下,這篇將tableView的代理方法做了總結,對上一篇博客進行了補充。數組

2、UITableViewDataSourc(數據源代理)

一、必須實現的回調方法

返回每一個分區的行數函數

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;學習

 

返回每一行的cellspa

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;.net

 

二、可選實現的方法

返回分區數(默認爲1)3d

 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;   代理

返回每一個分區頭部的標題code

 

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

返回每一個分區的尾部標題索引

 

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

設置某行是否可編輯

 

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

設置某行是否能夠被移動

 

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath;

設置索引欄標題數組(實現這個方法,會在tableView右邊顯示每一個分區的索引)

 

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

設置索引欄標題對應的分區

 

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

 

tableView接受編輯時調用的方法

 

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

這個方法中的editingStyle參數是一個枚舉,表明了cell被編輯的模式,以下:

typedef NS_ENUM(NSInteger, UITableViewCellEditingStyle) {
    UITableViewCellEditingStyleNone,//沒有編輯操做
    UITableViewCellEditingStyleDelete,//刪除操做
    UITableViewCellEditingStyleInsert//插入操做
};

 

tableView的cell被移動時調用的方法

 

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

 

3、UITableViewDelegate(tableView代理)

cell將要顯示時調用的方法

 

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;

頭視圖將要顯示時調用的方法

 

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section;

尾視圖將要顯示時調用的方法

 

- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section;

 

和上面的方法對應,這三個方法分別是cell,頭視圖,尾視圖已經顯示時調用的方法

 

- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath;

- (void)tableView:(UITableView *)tableView didEndDisplayingHeaderView:(UIView *)view forSection:(NSInteger)section;

- (void)tableView:(UITableView *)tableView didEndDisplayingFooterView:(UIView *)view forSection:(NSInteger)section;

 

設置行高,頭視圖高度和尾視圖高度的方法

 

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

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

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

設置行高,頭視圖高度和尾視圖高度的估計值(對於高度可變的狀況下,提升效率)

 

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath;

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForHeaderInSection:(NSInteger)section;

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForFooterInSection:(NSInteger)section;

 

設置自定義頭視圖和尾視圖

 

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

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


設置cell是否能夠高亮

 

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath;

 

cell高亮和取消高亮時分別調用的函數

 

- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath;

- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath;

 

立即將選中某行和取消選中某行時調用的函數,返回一直位置,執行選中或者取消選中

 

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath;

- (NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath;

 

已經選中和已經取消選中後調用的函數

 

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

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath;

 

設置tableView被編輯時的狀態風格,若是不設置,默認都是刪除風格

 

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

 

自定義刪除按鈕的標題

 

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

 

下面這個方法是IOS8中的新方法,用於自定義建立tableView被編輯時右邊的按鈕,按鈕類型爲UITableViewRowAction。

 

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath ;

 

設置編輯時背景是否縮進

 

- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath;

 

將要編輯和結束編輯時調用的方法

 

- (void)tableView:(UITableView*)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath;

- (void)tableView:(UITableView*)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath;


移動特定的某行

 

- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath;  

 

疏漏之處 歡迎指正

學習使用 歡迎轉載

專一技術,熱愛生活,交流技術,也作朋友。

——琿少 QQ羣:203317592

相關文章
相關標籤/搜索