iOS tableview編輯刪除 全選刪除 OC

tableview編輯刪除绢淀、全選刪除萤悴、左滑刪除、滑動到底端自動向上移動view的距離保證不遮擋皆的!

編輯按鈕在導航欄右側覆履、底端一個自定義footerView、刪除祭务、全選内狗!
#define VIEW_WIDTH [[UIScreen mainScreen] bounds].size.width
#define VIEW_HEIGHT [[UIScreen mainScreen] bounds].size.height
#import "ViewController.h"
#import "TableViewCell.h"
#import "FootView.h"

@interface ViewController ()<UITableViewDelegate, UITableViewDataSource>

@property (nonatomic, strong) UITableView *tableView;

@property (nonatomic, strong) FootView *footView;

@property (nonatomic, strong) NSMutableArray *cellArray;

@end

沒有數(shù)據(jù)、初始化一個數(shù)組當假數(shù)據(jù)义锥!

// 數(shù)據(jù)
_cellArray = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11", @"12", @"13", @"14", @"15", @"16", @"17", @"18", @"19", @"20", @"21", @"22", @"23", @"24", @"25", @"26", @"27", @"28", @"29", @"30", @"31", @"32", @"33", @"34", @"35", nil];

 // 編輯
- (void)changeNavRightItem{

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 50, 30);
[btn setTitle:@"編輯" forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.rightBarButtonItem = item;
}

編輯邏輯柳沙!

#pragma mark--Editing
- (void)btnClick:(UIButton *)btn{

btn.selected = !btn.selected;

if (btn.selected) {
    
    _footView.hidden = NO;
    [btn setTitle:@"取消" forState:UIControlStateNormal];
    //防止當全部選擇時,點擊取消編輯拌倍,再次進入第一次點擊全部選擇會無效
    [_footView.allBtn setTitle:@"全部選擇" forState:UIControlStateNormal];
    _footView.allBtn.selected = NO;
}else {
    
    _footView.hidden = YES;
    [btn setTitle:@"編輯" forState:UIControlStateNormal];
}
//讓tableView進入編輯模式
[_tableView setEditing:!_tableView.isEditing animated:YES];

if (_tableView.isEditing) {
    
    [_tableView setFrame:CGRectMake(0, 0, VIEW_WIDTH, VIEW_HEIGHT - 49)];
}else {
    
    [_tableView setFrame:CGRectMake(0, 0, VIEW_WIDTH, VIEW_HEIGHT)];
}

//根據(jù)偏移量計算是否滑動到tableView最后一行 count為無符號整型 強轉一下
if (_tableView.contentOffset.y > 50.0000000*(NSInteger)(_cellArray.count - 12 - 2)) {
    //cell高度*(模型數(shù)組個數(shù) - 頁面展示總cell數(shù) + 2) = 滑動到tableView倒數(shù)第二行的偏移量
        
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[_cellArray indexOfObject:[_cellArray lastObject]] inSection:0];
        
    [_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
}
}

刪除邏輯赂鲤!

#pragma mark--Delete
- (void)footDeleteBtnClick{

NSMutableArray *deleteArr = [[NSMutableArray alloc] init];
// 確定選擇哪條數(shù)據(jù)
for (NSIndexPath *indexPath in _tableView.indexPathsForSelectedRows) {
    
    [deleteArr addObject:_cellArray[indexPath.row]];
}
// 從總數(shù)據(jù)刪除被選中的數(shù)據(jù)
[_cellArray removeObjectsInArray:deleteArr];

[_tableView reloadData];

//防止當全部選擇時,點擊刪除柱恤,再次點擊全部選擇會無效
[_footView.allBtn setTitle:@"全部選擇" forState:UIControlStateNormal];

_footView.allBtn.selected = NO;
}

全選邏輯数初!

#pragma mark--AllSelected
- (void)footAllSelectedBtnClick:(UIButton *)btn{

btn.selected = !btn.selected;

for (int i = 0; i < _cellArray.count; i++) {
    
    NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0];
    
    if (btn.selected) {
        
        [_tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionTop];
        [btn setTitle:@"取消全選" forState:UIControlStateNormal];
    }else {
        
        [_tableView deselectRowAtIndexPath:indexPath animated:NO];
        [btn setTitle:@"全部選擇" forState:UIControlStateNormal];
    }
}
}

初始化tableview有一個屬性!

_tableView.allowsMultipleSelectionDuringEditing = YES;//設置tableView在編輯模式下可多選

左滑刪除梗顺!

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

if (editingStyle == UITableViewCellEditingStyleDelete) {
    
    [_cellArray removeObjectAtIndex:indexPath.row];
    
}
[_tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}

改變編輯狀態(tài)下左側圓圈勾選顏色泡孩!

cell.tintColor = [UIColor greenColor];// 改變編輯狀態(tài)左側勾選顏色

我的更多文章:你等下課滴

您可以關注我以便隨時查看我最新的文章,本篇文章是為了做筆記寺谤,順便提供給大家共同學習進步仑鸥!如果您對本篇文章有任何疑問吮播,請留言給我,有什么錯誤也可以留言提醒眼俊,如果對大家有幫助我很榮幸意狠!感謝!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末疮胖,一起剝皮案震驚了整個濱河市环戈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澎灸,老刑警劉巖院塞,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異击孩,居然都是意外死亡迫悠,警方通過查閱死者的電腦和手機鹏漆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門巩梢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艺玲,你說我怎么就攤上這事括蝠。” “怎么了饭聚?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我矫限,道長凭戴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任酪碘,我火速辦了婚禮朋譬,結果婚禮上,老公的妹妹穿的比我還像新娘兴垦。我一直安慰自己徙赢,他們只是感情好,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布探越。 她就那樣靜靜地躺著狡赐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钦幔。 梳的紋絲不亂的頭發(fā)上枕屉,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天,我揣著相機與錄音鲤氢,去河邊找鬼搀擂。 笑死拐纱,一個胖子當著我的面吹牛,可吹牛的內容都是我干的哥倔。 我是一名探鬼主播秸架,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咆蒿!你這毒婦竟也來了东抹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤沃测,失蹤者是張志新(化名)和其女友劉穎缭黔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒂破,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡馏谨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了附迷。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惧互。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喇伯,靈堂內的尸體忽然破棺而出喊儡,到底是詐尸還是另有隱情,我是刑警寧澤稻据,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布艾猜,位于F島的核電站,受9級特大地震影響捻悯,放射性物質發(fā)生泄漏匆赃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一今缚、第九天 我趴在偏房一處隱蔽的房頂上張望算柳。 院中可真熱鬧,春花似錦荚斯、人聲如沸埠居。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滥壕。三九已至,卻和暖如春兽泣,著一層夾襖步出監(jiān)牢的瞬間绎橘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留称鳞,地道東北人涮较。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像冈止,于是被迫代替她去往敵國和親狂票。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內容