中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

UITableViewCell的標記、移動、刪除、插入

發布時間:2020-06-11 01:52:37 來源:網絡 閱讀:616 作者:新風作浪 欄目:開發技術
        這篇文章是建立在 

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


1.標記:指的是選中某一行,在這一行后面有個符號,常見的是對勾形式
通過修改cell的accessoryType屬性來實現,首先,在ViewDidLoad中[tableView setEditing:NO animated:YES];表示把單元格可編輯狀態這只為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];     } }

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

UITableViewCellAccessoryDisclosureIndicator   UITableViewCellAccessoryNone
 UITableViewCell的標記、移動、刪除、插入    UITableViewCell的標記、移動、刪除、插入

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

UITableViewCellEditingStyleDelete                                                UITableViewCellEditingStyleInsert

UITableViewCell的標記、移動、刪除、插入  UITableViewCell的標記、移動、刪除、插入


UITableViewCellEditingStyleNone

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

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

UITableViewCell的標記、移動、刪除、插入  UITableViewCell的標記、移動、刪除、插入
3.刪除
首先是判斷(UITableViewCellEditingStyle)editingStyle,所以
//單元格返回的編輯風格,包括刪除 添加 和 默認  和不可編輯三種風格 -(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]; //        通過獲取的索引值刪除數組中的值         [self.listData removeObjectAtIndex:row]; //        刪除單元格的某一行時,在用動畫效果實現刪除過程         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];     } }

刪除了張四 效果圖:
UITableViewCell的標記、移動、刪除、插入  UITableViewCell的標記、移動、刪除、插入UITableViewCell的標記、移動、刪除、插入  UITableViewCell的標記、移動、刪除、插入
4.添加
實現方法和刪除方法相同,首先還是返回單元格編輯風格
//單元格返回的編輯風格,包括刪除 添加 和 默認  和不可編輯三種風格 -(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]; //        通過獲取的索引值刪除數組中的值         [self.listData removeObjectAtIndex:row]; //        刪除單元格的某一行時,在用動畫效果實現刪除過程         [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]; //        添加單元行的設置的標題         [self.listData insertObject:mes atIndex:row];         [tableView insertRowsAtIndexPaths:insertIndexPath withRowAnimation:UITableViewRowAnimationRight];     } }

運行效果圖:
UITableViewCell的標記、移動、刪除、插入  UITableViewCell的標記、移動、刪除、插入 UITableViewCell的標記、移動、刪除、插入  UITableViewCell的標記、移動、刪除、插入

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

UITableViewRowAnimationAutomatic      UITableViewRowAnimationTop 

UITableViewRowAnimationBottom          UITableViewRowAnimationLeft

UITableViewRowAnimationRight             UITableViewRowAnimationMiddle

UITableViewRowAnimationFade              UITableViewRowAnimationNone




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




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丰县| 武清区| 吉隆县| 武夷山市| 葵青区| 观塘区| 三原县| 曲水县| 新建县| 齐齐哈尔市| 牙克石市| 井陉县| 江安县| 平果县| 崇阳县| 盘锦市| 澄城县| 化州市| 河津市| 周口市| 叶城县| 昔阳县| 东明县| 治多县| 台南县| 鹿泉市| 三明市| 永新县| 缙云县| 光泽县| 娱乐| 平泉县| 甘孜| 黔西县| 资中县| 万州区| 荆州市| 常熟市| 定襄县| 水城县| 抚松县|