iOS中tableview實(shí)現(xiàn)編輯、全選及刪除等功能的方法示例
前言
我們?cè)谌粘i_(kāi)發(fā)過(guò)程中或多或少都會(huì)遇到tableview的各種功能,這里簡(jiǎn)單記錄一下tableview的刪除和全選刪除功能,廢話不多說(shuō)先看一下效果圖

既然拿到了需求,就應(yīng)該想一下如何去實(shí)現(xiàn)了,對(duì)照上面圖片的內(nèi)容,應(yīng)該如何實(shí)現(xiàn)呢?
看完上圖之后發(fā)現(xiàn)用到的幾個(gè)功能:
第一個(gè):左滑刪除
第二個(gè):全選刪除
左邊滑動(dòng)刪除
實(shí)現(xiàn)幾個(gè)代理方法后就可以了
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
return @"刪除";
}
改變左滑后按鈕的文字
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewCellEditingStyleDelete;
}
滑動(dòng)刪除樣式,有多中可選,這里返回刪除樣式
- (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[self.dataArray removeObjectAtIndex: indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSMutableArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[self.tableView reloadData];
}
}
刪除點(diǎn)擊方法,處理想要?jiǎng)h除的數(shù)據(jù)
這里有一個(gè)需要注意點(diǎn),一定要先更新數(shù)據(jù)源,在更新UI
左滑刪除就這些代碼了,是不是很easy,在來(lái)看全選的代碼
全選刪除
這里我用的是全選功能是系統(tǒng)的方法,沒(méi)有自定義按鈕
點(diǎn)擊編輯按鈕的時(shí)候設(shè)置tableview
[_tableView setEditing:YES animated:YES];
返回全選的樣式
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete|UITableViewCellEditingStyleInsert;
}
這樣就會(huì)出現(xiàn)左側(cè)的選中框
再來(lái)就是全選按鈕的實(shí)現(xiàn)方法
for (int i = 0; i< self.dataArray.count; i++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0];
[_tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionTop];
}
if (self.deleteArray.count >0) {
[self.deleteArray removeAllObjects];
}
[self.deleteArray addObjectsFromArray:self.dataArray];
[btn setTitle:@"取消" forState:UIControlStateNormal];
當(dāng)然取消全選也有方法
for (int i = 0; i< self.dataArray.count; i++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0];
[_tableView deselectRowAtIndexPath:indexPath animated:NO];
}
通過(guò)全選按鈕實(shí)現(xiàn)的選中方法,需要在方法里把所有數(shù)據(jù)都添加到想要?jiǎng)h除的數(shù)組里面
通過(guò)點(diǎn)擊tableviewcell選擇刪除對(duì)象的時(shí)候需要把想要?jiǎng)h除的數(shù)據(jù)添加到刪除數(shù)組里面
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (self.btn.selected) {
NSLog(@"選中");
[self.deleteArray addObject:[self.dataArray objectAtIndex:indexPath.row]];
}else{
NSLog(@"跳轉(zhuǎn)下一頁(yè)");
}
}
再次點(diǎn)擊取消選中的數(shù)據(jù)
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
if (self.btn.selected) {
NSLog(@"撤銷");
[self.deleteArray removeObject:[self.dataArray objectAtIndex:indexPath.row]];
}else{
NSLog(@"取消跳轉(zhuǎn)");
}
}
問(wèn)題一:
按照以上方法實(shí)現(xiàn)之后就可以實(shí)現(xiàn)想要的功能,但是還有UI的問(wèn)題,那就是選擇之后會(huì)出現(xiàn)下圖的問(wèn)題

會(huì)有一層背景色的覆蓋,想要了解的請(qǐng)看看這篇文章 http://www.dhdzp.com/article/117619.htm
問(wèn)題二:
還有一個(gè)問(wèn)題 ,在自定義的cell上面添加控件的時(shí)候一定要添加到self.contentView上面,否則會(huì)出現(xiàn)控件不隨cell移動(dòng)的問(wèn)題
[self.contentView addSubview:self.label];
結(jié)束
到這里這篇文章的內(nèi)容基本算完結(jié)了,如果還是有不明白的我在此留下Demo鏈接,里面有更詳細(xì)的注釋,Demo沒(méi)有做UI適配,想看效果的畫(huà)在模擬器6,7上面運(yùn)行最好
Demo地址:http://git.oschina.net/T1_mine/tableviewedit
本地下載地址:http://xiazai.jb51.net/201707/yuanma/tableviewedit(jb51.net).rar
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
iOS 修改alertViewController彈框的字體顏色及字體的方法
下面小編就為大家分享一篇iOS 修改alertViewController彈框的字體顏色及字體的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
ios啟動(dòng)頁(yè)強(qiáng)制豎屏(進(jìn)入App后允許橫屏與豎屏)
最近工作遇到這樣一個(gè)需要,當(dāng)進(jìn)入啟動(dòng)頁(yè)需要強(qiáng)制豎屏,而進(jìn)入APP后就允許橫屏與豎屏,通過(guò)查找相關(guān)的資料找到了解決的方法,所以將實(shí)現(xiàn)的方法整理后分享出來(lái),需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2017-03-03
iOS開(kāi)發(fā)總結(jié)之UILabel常用屬性介紹
下面小編就為大家分享一篇iOS開(kāi)發(fā)總結(jié)之UILabel常用屬性介紹,具有很的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
iOS應(yīng)用中UISearchDisplayController搜索效果的用法
這篇文章主要介紹了iOS應(yīng)用中UISearchDisplayController搜索效果的用法,包括點(diǎn)擊搜索出現(xiàn)黑條問(wèn)題的解決方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-02-02
IOS 開(kāi)發(fā)之查看大圖的實(shí)現(xiàn)代碼
這篇文章主要介紹了IOS 開(kāi)發(fā)之查看大圖的實(shí)現(xiàn)代碼的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-10-10
IOS中UITextView或UITextField字?jǐn)?shù)限制的實(shí)現(xiàn)
這篇文章主要介紹了IOS中UITextView或UITextField字?jǐn)?shù)限制的實(shí)現(xiàn)的相關(guān)資料,希望通過(guò)本文能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
iOS如何跳轉(zhuǎn)到App Store下載評(píng)分頁(yè)面示例代碼
最近在工作中遇到一個(gè)需求,需要跳轉(zhuǎn)到App Store下載評(píng)分,通過(guò)查找相關(guān)的資料最終解決了,下面這篇文章主要給大家介紹了關(guān)于iOS如何跳轉(zhuǎn)到App Store下載評(píng)分頁(yè)面的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-12-12

