溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

UITableViewCell的標(biāo)記、移動、刪除、插入

發(fā)布時間:2020-06-11 01:52:37 來源:網(wǎng)絡(luò) 閱讀:616 作者:新風(fēng)作浪 欄目:開發(fā)技術(shù)
        這篇文章是建立在 

代碼實現(xiàn) UITableView與UITableViewCell基礎(chǔ)上進行修改,用不上的代碼我注釋調(diào),部分不明白可以看看上篇博客;實現(xiàn)的功能是對UITableViewCell的標(biāo)記、移動、刪除、插入;


1.標(biāo)記:指的是選中某一行,在這一行后面有個符號,常見的是對勾形式
通過修改cell的accessoryType屬性來實現(xiàn),首先,在ViewDidLoad中[tableView setEditing:NO animated:YES];表示把單元格可編輯狀態(tài)這只為NO
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {     UITableViewCell *cellView = [tableView cellForRowAtIndexPath:indexPath];     if (cellView.accessoryType == UITableViewCellAccessoryNone) {         cellView.accessoryType=UITableViewCellAccessoryCheckmark;     }     else {         cellView.accessoryType = UITableViewCellAccessoryNone;         [tableView deselectRowAtIndexPath:indexPath animated:YES];     } }

 當(dāng)我們選中單元格的時候,調(diào)用此函數(shù),首先是indexPath檢測選中了哪一行,if判斷當(dāng)前單元格是否被標(biāo)記,也就是當(dāng)前單元格風(fēng)格,是否為UITableViewCellAccessoryCheckmark風(fēng)格,如果是,則換成UITableViewCellAccessoryNone(不被標(biāo)記風(fēng)格)風(fēng)格,以下accessoryType四個風(fēng)格屬性
 UITableViewCellAccessoryCheckmark                 UITableViewCellAccessoryDetailDisclosureButton
  UITableViewCell的標(biāo)記、移動、刪除、插入      UITableViewCell的標(biāo)記、移動、刪除、插入

UITableViewCellAccessoryDisclosureIndicator   UITableViewCellAccessoryNone
 UITableViewCell的標(biāo)記、移動、刪除、插入    UITableViewCell的標(biāo)記、移動、刪除、插入

2.移動  
實現(xiàn)移動單元格就需要把單元格的編輯屬性設(shè)置為YES,[tableView setEditing:YES animated:YES];
//返回YES,表示支持單元格的移動 -(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {     return YES; }
//單元格返回的編輯風(fēng)格,包括刪除 添加 和 默認  和不可編輯三種風(fēng)格 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {     return UITableViewCellEditingStyleInsert; }
三種風(fēng)格的分別是

UITableViewCellEditingStyleDelete                                                UITableViewCellEditingStyleInsert

UITableViewCell的標(biāo)記、移動、刪除、插入  UITableViewCell的標(biāo)記、移動、刪除、插入


UITableViewCellEditingStyleNone

UITableViewCell的標(biāo)記、移動、刪除、插入
實現(xiàn)移動的方法
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath { //    需要的移動行     NSInteger fromRow = [sourceIndexPath row]; //    獲取移動某處的位置     NSInteger toRow = [destinationIndexPath row]; //    從數(shù)組中讀取需要移動行的數(shù)據(jù)     id object = [self.listData objectAtIndex:fromRow]; //    在數(shù)組中移動需要移動的行的數(shù)據(jù)     [self.listData removeObjectAtIndex:fromRow]; //    把需要移動的單元格數(shù)據(jù)在數(shù)組中,移動到想要移動的數(shù)據(jù)前面     [self.listData insertObject:object atIndex:toRow];   }

單元格的移動是選中單元格行后面三條橫線才可以實現(xiàn)移動的

UITableViewCell的標(biāo)記、移動、刪除、插入  UITableViewCell的標(biāo)記、移動、刪除、插入
3.刪除
首先是判斷(UITableViewCellEditingStyle)editingStyle,所以
//單元格返回的編輯風(fēng)格,包括刪除 添加 和 默認  和不可編輯三種風(fēng)格 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {     return UITableViewCellEditingStyleDelete; }

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {     if (editingStyle==UITableViewCellEditingStyleDelete) { //        獲取選中刪除行索引值         NSInteger row = [indexPath row]; //        通過獲取的索引值刪除數(shù)組中的值         [self.listData removeObjectAtIndex:row]; //        刪除單元格的某一行時,在用動畫效果實現(xiàn)刪除過程         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];     } }

刪除了張四 效果圖:
UITableViewCell的標(biāo)記、移動、刪除、插入  UITableViewCell的標(biāo)記、移動、刪除、插入UITableViewCell的標(biāo)記、移動、刪除、插入  UITableViewCell的標(biāo)記、移動、刪除、插入
4.添加
實現(xiàn)方法和刪除方法相同,首先還是返回單元格編輯風(fēng)格
//單元格返回的編輯風(fēng)格,包括刪除 添加 和 默認  和不可編輯三種風(fēng)格 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {     return UITableViewCellEditingStyleInsert; }

為了顯示效果明顯,在.h文件中聲明一個變量i
#import <UIKit/UIKit.h>  @interface STViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> {  NSInteger i; } @property(strong,nonatomic) NSMutableArray *listData; @property(strong,nonatomic)UITableView *tableView; @property(strong,nonatomic)UITableViewCell *tableViewCell;  @end

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {     if (editingStyle==UITableViewCellEditingStyleDelete) { //        獲取選中刪除行索引值         NSInteger row = [indexPath row]; //        通過獲取的索引值刪除數(shù)組中的值         [self.listData removeObjectAtIndex:row]; //        刪除單元格的某一行時,在用動畫效果實現(xiàn)刪除過程         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];     }     if(editingStyle==UITableViewCellEditingStyleInsert)     {                 i=i+1;         NSInteger row = [indexPath row];         NSArray *insertIndexPath = [NSArray arrayWithObjects:indexPath, nil];         NSString *mes = [NSString stringWithFormat:@"添加的第%d行",i]; //        添加單元行的設(shè)置的標(biāo)題         [self.listData insertObject:mes atIndex:row];         [tableView insertRowsAtIndexPaths:insertIndexPath withRowAnimation:UITableViewRowAnimationRight];     } }

運行效果圖:
UITableViewCell的標(biāo)記、移動、刪除、插入  UITableViewCell的標(biāo)記、移動、刪除、插入 UITableViewCell的標(biāo)記、移動、刪除、插入  UITableViewCell的標(biāo)記、移動、刪除、插入

在刪除和添加單元格的用到UITableViewRowAnimation動畫效果,它還有其他幾種效果,在此不做測試

UITableViewRowAnimationAutomatic      UITableViewRowAnimationTop 

UITableViewRowAnimationBottom          UITableViewRowAnimationLeft

UITableViewRowAnimationRight             UITableViewRowAnimationMiddle

UITableViewRowAnimationFade              UITableViewRowAnimationNone




附上源代碼:http://download.csdn.net/detail/duxinfeng2010/4416925




向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI