UITableView進階:常用代理方法及屬性

在前面的文章里面已經(jīng)寫過了“UITableView基礎(chǔ)”掀序,所以這篇里面就不再對這里面的內(nèi)容進行介紹谍婉。如果有幸去瞄一眼的纳令,可以通過文章下面的拓展鏈接傳送門去看柠贤。&

今天重點聊一聊UITableView中經(jīng)常使用到的代理方法及屬性。本文不是工具箱雷滋,所以不會將所有的屬性和方法都寫下來噢不撑。只是總結(jié)經(jīng)常使用到的。太完整的也記不住晤斩,真的是要用的時候臨時翻一下.h文件看看也行焕檬。

1. 常用屬性

1.1 分隔線屬性

屬性名稱 數(shù)值 作用
separatorStyle UITableViewCellSeparatorStyle 分割線樣式
separatorColor UIColor 分隔線顏色

1.2 cell被選中的屬性

屬性名稱 數(shù)值 作用
allowsSelection BOOL 允許選中
allowsMultipleSelection BOOL 允許多選
indexPathsForSelectedRows NSArray < NSIndexPath *> 獲取當前選中cell的indexPaths
indexPathsForVisibleRows NSArray < NSIndexPath *> 當前可見行數(shù)
  • allowsSelection:BOOL類型,一是說說這一個cell是否可以被選中澳泵。在某種情況下实愚,我們希望點擊cell的時候不需要做出任何的反應,就可以修改這個屬性兔辅。
  • allowsMultipleSelection:需要進行多行選擇的時候就要將此設(shè)置為YES腊敲。
  • indexPathsForSelectedRows:這里返回的是包含了indexPath的數(shù)組噢,因為要考慮到是多行選中的情況维苔。知道了這個屬性之后碰辅,不要一說獲取選中的cell的indexPath就只會用代理方法。&
  • indexPathsForVisibleRows:這個方法其實并不太經(jīng)常使用介时,但是很能提升逼格没宾。這個屬性也是一個數(shù)組凌彬,它裝著目前屏幕上可見的cell的indexPath集合。在做兩級菜單聯(lián)動的時候可能會需要用到循衰。

2. 進階的常用代理方法

神馬滾動到指定的cell铲敛,設(shè)置cell的高度,設(shè)置header羹蚣、footer的高度等等這些方法就不再說了原探。

2.1 最最常用的方法:選中指定的cell

//選中cell
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

2.2 編輯模式

  • 開啟支持編輯模式
Paste_Image.png
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
  • 修改點擊編輯后,每個cell前方的icon
//修改上圖的圖標
- (UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

  • 修改上圖圖標對應的執(zhí)行方法
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

2.3 拖拽排序模式

重要:開啟支持拖拽排序的前提是:開啟支持編輯模式顽素。

Paste_Image.png
  • 開啟拖拽模式
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}
  • 拖拽之后對應的執(zhí)行方法
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
    ```

//修改刪除按鈕文字

  • (NSString *) tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    return @"刪除";
    }
##2.4 自定義cell左滑事件

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2248583-728eb64caa005450.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
  • (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath

##2.5 修改cell左滑文字
  • (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
    return @"haha";
    }
#3. 四種刷新tableView的方法

// 新增表格數(shù)據(jù)
[tableView insertRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationTop];

// 刪除表格數(shù)據(jù)
[tableView deleteRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationRight];

// 局部刷新指定的行
[tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationMiddle];

// 刷新全部表格數(shù)據(jù)咽弦,如果能夠準確確定被修改的數(shù)據(jù)行,就不要用此方法
[tableView reloadData];
#4. tableViewCell排序
##4.1 cell交換排序
- 在cell拖拽對應的執(zhí)行方法中進行胁出。

[self.contactArray exchangeObjectAtIndex:fromIndexPath.row withObjectAtIndex:toIndexPath.row];

##4.2 cell順序排序
- 依舊還是在cell拖拽對應的執(zhí)行方法中進行型型。
//     獲取選中的數(shù)組。刪除后全蝶,插入到相應的行
GMContact *tempContact = self.contactArray[fromIndexPath.row];

[self.contactArray removeObjectAtIndex:fromIndexPath.row];
[self.contactArray insertObject:tempContact atIndex:toIndexPath.row];
   
##4.3 開了編輯模式后闹蒜,在編輯模式下插入一條cell
- 需要在編輯模式下,修改icon執(zhí)行方法中寫入抑淫。
   
  • (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
    //刪除數(shù)組對應的數(shù)據(jù)
    [self.contactArray removeObjectAtIndex:indexPath.row];

    //刪除對用cell
    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    } else if (editingStyle == UITableViewCellEditingStyleInsert) {
    //插入數(shù)據(jù)
    GMContact * contact = [[GMContact alloc] init];
    contact.name = @"曲大帥帥";
    contact.number = @"110119120";

          //往數(shù)組中插入
          [self.contactArray insertObject:contact atIndex:indexPath.row + 1];
          
          //插入cell
          NSIndexPath * inserIndex = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:0];
          //插入動畫绷落,不然顯得很突兀
          [tableView insertRowsAtIndexPaths:@[inserIndex] withRowAnimation:UITableViewRowAnimationFade];
      }   
    

    }

    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市始苇,隨后出現(xiàn)的幾起案子砌烁,更是在濱河造成了極大的恐慌,老刑警劉巖催式,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件函喉,死亡現(xiàn)場離奇詭異,居然都是意外死亡荣月,警方通過查閱死者的電腦和手機管呵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哺窄,“玉大人捐下,你說我怎么就攤上這事∶纫担” “怎么了蔑担?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長咽白。 經(jīng)常有香客問我,道長鸟缕,這世上最難降的妖魔是什么晶框? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任排抬,我火速辦了婚禮,結(jié)果婚禮上授段,老公的妹妹穿的比我還像新娘蹲蒲。我一直安慰自己,他們只是感情好侵贵,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布届搁。 她就那樣靜靜地躺著,像睡著了一般窍育。 火紅的嫁衣襯著肌膚如雪卡睦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天漱抓,我揣著相機與錄音表锻,去河邊找鬼。 笑死乞娄,一個胖子當著我的面吹牛瞬逊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仪或,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼确镊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了范删?” 一聲冷哼從身側(cè)響起蕾域,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓶逃,沒想到半個月后束铭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡厢绝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年契沫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昔汉。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡懈万,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出靶病,到底是詐尸還是另有隱情会通,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布娄周,位于F島的核電站涕侈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏煤辨。R本人自食惡果不足惜裳涛,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一木张、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧端三,春花似錦舷礼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至团赁,卻和暖如春育拨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背然痊。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工至朗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人剧浸。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓锹引,卻偏偏與公主長得像,于是被迫代替她去往敵國和親唆香。 傳聞我的和親對象是個殘疾皇子嫌变,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

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