ios tableViewCell 陣列方式 全選、多選的刪除
typedefNS_ENUM(NSUInteger, EditTypes) {
// 刪除狀態
deleteForEditTypes = 0,
// 編輯狀態
editForEditTypes,
};
@interfaceFavoriteBoard ()<UITableViewDelegate, UITableViewDataSource>
@property (weak, nonatomic) IBOutletUIToolbar *toolBar;
@property (weak, nonatomic) IBOutletUITableView *tableView;
// 編輯
@property (weak, nonatomic) IBOutletUIBarButtonItem *btnEdit;
// 選擇全部
@property (weak, nonatomic) IBOutletUIButton *btnSelectAll;
// 刪除
@property (weak, nonatomic) IBOutletUIButton *btnDelete;
// 資料來源
@property (strong, nonatomic) NSMutableArray *arrFavorites;
// 選擇的cell
@property (strong, nonatomic) NSMutableArray
@property (assign, nonatomic) EditTypes editType;
@property (strong, nonatomic) Favorite *favorite;
@end
@implementation FavoriteBoard
@synthesize arrFavorites;
@synthesize arrSelectRows;
- (void)viewDidLoad {
[superviewDidLoad];
self.navigationController.navigationBar.barTintColor
self.editType = deleteForEditTypes;
self.arrSelectRows = [NSMutableArrayarray];
self.arrFavorites = [NSMutableArrayarray];
[self.toolBarsetHidden: YES];
[self.btnDeletesetSelected: NO];
[self.btnDeletesetEnabled: NO];
[selfgetFavoriteList];
}
/**
* @brief 獲取收藏列表
*/
- (void)getFavoriteList
{
[INKFavouriteViewModelfavoriteListWithCallback:^(id data, INKResponseError *error) {
self.arrFavorites = data;
if (self.arrFavorites.count != 0) {
self.noFavouriteView.hidden = YES;
}
[self.tableViewreloadData];
}];
}
- (void)viewWillAppear:(BOOL)animated
{
if (self.arrFavorites.count == 0) {
[self.btnEditsetEnabled:NO];
self.noFavouriteView.hidden = NO;
}
}
- (void)viewDidDisappear:(BOOL)animated {
[self.toolBarsetHidden:YES];
}
#pragma mark - 編輯狀態
- (IBAction)btnEdit:(id)sender {
if ([self.btnEdit.titleisEqualToString:@"編輯"]) {
self.btnEdit.title = @"取消";
self.editType = editForEditTypes;
[self.tableViewsetEditing:YESanimated:YES];
[self.toolBarsetHidden:NO];
}
else
{
self.editType = deleteForEditTypes;
self.btnEdit.title = @"編輯";
[self.tableViewsetEditing:NOanimated:YES];
[self.toolBarsetHidden:YES];
self.btnDelete.selected = NO;
self.btnDelete.enabled = NO;
[arrSelectRowsremoveAllObjects];
}
}
#pragma mark - 返回
- (IBAction)btnBack:(id)sender {
[self.navigationControllerpopViewControllerAnimated:YES];
}
#pragma mark - 選擇全部
- (IBAction)btnSelectAllFavourite:(id)sender {
if (self.arrSelectRows.count != self.arrFavorites.count) {
[self.arrSelectRowsremoveAllObjects];
[self.arrSelectRowsaddObjectsFromArray:self.arrFavorites];
for (int i = 0; i < self.arrSelectRows.count; i ++) {
NSIndexPath *indexPath = [NSIndexPathindexPathForRow:i inSection:0];
// 遍歷陣列,將所有元素置為選中狀態
[self.tableViewselectRowAtIndexPath:indexPath
animated:YES
scrollPosition:UITableViewScrollPositionNone];
}
[selfchangeButtonStatus];
}
else {
for (int i = 0; i < self.arrSelectRows.count; i ++) {
// 取消選中狀態
NSIndexPath *indexPath = [NSIndexPathindexPathForRow:i inSection:0];
[self.tableViewdeselectRowAtIndexPath:indexPath animated:YES];
}
[self.arrSelectRowsremoveAllObjects];
[selfchangeButtonStatus];
}
}
- (void)deleteToSelectIndexPath
{
[INKFavouriteAndLikeViewModelfavoriteCancels:(NSArray *)self.arrSelectRows
withCallback:^(id data, INKResponseError *error) {
if (error == nil) {
[arrFavoritesremoveObjectsInArray:arrSelectRows];
[arrSelectRowsremoveAllObjects];
[selfchangeButtonStatus];
if (self.arrFavorites.count == 0) {
self.noFavouriteView.hidden = NO;
[self.viewreloadInputViews];
}
[self.tableViewreloadData];
}
}];
}
#pragma mark - 多選刪除
- (IBAction)btnDeleteFavourite:(id)sender {
[INKFavouriteAndLikeViewModelfavoriteCancels:(NSArray *)self.arrSelectRows
withCallback:^(id data, INKResponseError *error) {
if (error == nil) {
[arrFavoritesremoveObjectsInArray:arrSelectRows];
[arrSelectRowsremoveAllObjects];
[selfchangeButtonStatus];
if (self.arrFavorites.count == 0) {
self.noFavouriteView.hidden = NO;
[self.viewreloadInputViews];
}
[self.tableViewreloadData];
}
}];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
returnself.arrFavorites.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *favoriteImageCell = @"favoriteImageCell";
NSString *favoriteLocationCell = @"favoriteLocationCell";
NSString *favoriteTextCell = @"favoriteTextCell";
NSString *currentCell = nil;
Favorite *favorite = [self.arrFavoritesobjectAtIndex:indexPath.row];
if (favorite.location != nil) {
currentCell = favoriteLocationCell;
}
else {
if (favorite.imageName != nil) {
currentCell = favoriteImageCell;
}
else {
currentCell = favoriteTextCell;
}
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:currentCell forIndexPath:indexPath];
[selfconfigCell:cell indexPath:indexPath];
return cell;
}
- (void)configCell:(UITableViewCell *)cell indexPath:(NSIndexPath *)indexPath
{
self.favorite = [self.arrFavoritesobjectAtIndex:indexPath.row];
cell.data = self.favorite;
}
#pragma mark - 編輯後的選中與取消選中
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.favorite = [self.arrFavoritesobjectAtIndex:indexPath.row];
if (self.editType == editForEditTypes) {
[self.arrSelectRowsaddObject:self.favorite];
[selfchangeButtonStatus];
}
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.favorite = [self.arrFavoritesobjectAtIndex:indexPath.row];
if (self.editType == editForEditTypes) {
[self.arrSelectRowsremoveObject:self.favorite];
INFO(@"de arrSelectRows: %lu", (unsignedlong)arrSelectRows.count);
INFO(@"de arrFavorites : %lu", (unsignedlong)arrFavorites.count);
[selfchangeButtonStatus];
}
}
#pragma mark - 允許編輯
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
returnYES;
}
#pragma mark - 改變編輯狀態
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.editType == editForEditTypes) {
returnUITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
}
returnUITableViewCellEditingStyleDelete;
}
#pragma mark - 單選刪除,修改方式
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[INKFavouriteAndLikeViewModelfavoriteCancel:self.favorite
withCallback:^(id data, INKResponseError *error) {
if (error == nil) {
[self.arrFavoritesremoveObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath]
withRowAnimation:UITableViewRowAnimationFade];
if (self.arrFavorites.count == 0) {
self.noFavouriteView.hidden = NO;
}
}
}];
}
elseif (editingStyle == (UITableViewCellEditingStyleInsert | UITableViewCellEditingStyleDelete)) {
}
}
#pragma mark - 修改的狀態
- (void)changeButtonStatus
{
if (arrSelectRows.count > 0) {
self.btnDelete.selected = YES;
self.btnDelete.enabled = YES;
}
else {
self.btnDelete.selected = NO;
self.btnDelete.enabled = NO;
}
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
}
@end