亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

UITableView編輯

2019-11-14 18:04:42
字體:
來源:轉載
供稿:網友

對 UITableView 進行添加,刪除,移動,基本操作的流程.

1.初始化 UITableView 步驟:

  1> 遵守協議 <UITableViewDelegate,UITableViewDataSource>

  2> 設置代理

  3> 實現方法 必須實現的方法有兩個 - (NSInteger)tableView:numberOfRowsInSection:(設置每個分組的行數)- (UITableViewCell*)tableView: cellForRowAtIndexPath: (設置每行的顯示)

2.對 tableView 進行增刪移動操作 (通過實現協議方法)

  1>設置是否可編譯 - (BOOL)tableView: canEditRowAtIndexPath: 返回 YES 可以編輯,返回 NO 不可編輯

  2>設置編輯的類型 - (UITableViewCellEditingStyle)tableView: editingStyleForRowAtIndexPath: 返回 UITableViewCellEditingStyleDelete 刪除操作,UITableViewCellEditingStyleInsert 添加操作

  3>完成編輯操作:

    添加和刪除操作相似,實現 - (void)tableView: commitEditingStyle: forRowAtIndexPath: 在進行操作時,一定是先對數據操作,然后操作 Cell

      刪除操作:(實例方法)deleteSections: withRowAnimation: 刪除分組  deleteRowsAtIndexPaths: withRowAnimation: 刪除行

      添加操作:(實例方法)insertRowsAtIndexPaths: withRowAnimation: 添加行

    移動操作:- (void)tableView: moveRowAtIndexPath: toIndexPath:在進行操作時,一定是先對數據操作,然后操作 Cell

      移動操作:數據處理過程:先存儲要移動數據,刪除原數據,插入數據

      調用實例方法:moveRowAtIndexPath: toIndexPath: 兩個參數 原位置,要移動到的位置

      限定移動的范圍:- (NSIndexPath*)tableView: targetIndexPathForMoveFromRowAtIndexPath: (如果限定在同一分組內移動,判斷傳入的參數的 section 是否相等,(第一個參數原位置,第二個參數要移動的位置),相等返回要移動到的位置,不同返回原位置.

 

個人寫的一個簡單的實現代碼:

  1 //  2 //  RootViewController.m  3 //  Lesson10_HomeWork  4 //  5 //  Created by Ager on 15/10/26.  6 //  Copyright © 2015年 Ager. All rights reserved.  7 //  8   9 #import "RootViewController.h" 10  11 @interface RootViewController () 12 { 13     UITableViewCellEditingStyle style; //表示對 table 的操作類型 14     BOOL addFlag; //表示 addButton 按鈕的狀態 15 } 16  17 @end 18  19 @implementation RootViewController 20  21 - (void)loadView{ 22     self.rootView = [[RootView alloc]initWithFrame:[UIScreen mainScreen].bounds]; 23     self.view = self.rootView; 24 } 25  26 - (void)viewDidLoad { 27     [super viewDidLoad]; 28     // Do any additional setup after loading the view. 29      30     //設置代理 31     self.rootView.tableView.delegate = self; 32     self.rootView.tableView.dataSource = self; 33      34     //初始化數據 35     self.DataArray = [NSMutableArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"DataArray" ofType:@"plist"]]; 36      37     //添加刪除觸發按鈕 38     self.navigationItem.rightBarButtonItem = self.editButtonItem; 39     self.editButtonItem.title = @"刪除"; 40      41     //添加 添加數據按鈕 42     UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithTitle:@"添加" style:UIBarButtonItemStylePlain target:self action:@selector(insertAction:)]; 43     addFlag = NO; 44     self.navigationItem.leftBarButtonItem = addButton; 45      46      47 } 48  49 #PRagma mark --- 實現代理方法 --- 50  51 #pragma mark --- 必須實現的方法 --- 52  53  54 /** 55  *  每組數據的行數 56  */ 57  58 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 59     return [[self.DataArray objectAtIndex:section] count]; 60 } 61  62  63 /** 64  *  設置cell 65  */ 66  67 - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 68     static NSString *cell_id = @"cell_id"; 69     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cell_id]; 70     if (!cell) { 71         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cell_id]; 72     } 73      74     cell.textLabel.text = [[self.DataArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]; 75     return cell; 76 } 77  78  79 #pragma mark --- 不必須實現的代理方法 --- 80  81 /** 82  *  分組數 83  */ 84  85 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 86     return [self.DataArray count]; 87 } 88  89  90 #pragma mark --- 對 TableView 編輯 --- 91  92  93 /** 94  *  設置是否可以編輯 95  */ 96 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{ 97     return YES; 98 } 99 100 101 /**102  *  設置編輯類型103  */104 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{105     return style;106 }107 108 109 /**110  *  完成 TableView 操作111  */112 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{113     //修改數據,修改UI114     //先修改數據,在修改UI115     116     if (editingStyle == UITableViewCellEditingStyleDelete) {117         //刪除行118         if ([[self.DataArray objectAtIndex:indexPath.section] count] == 1) {119             //刪除分組120             [self.DataArray removeObjectAtIndex:indexPath.section];121             [tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationRight];122         }else {123             124             //刪除單行125             [[self.DataArray objectAtIndex:indexPath.section] removeObjectAtIndex:indexPath.row];126             [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationRight];127         }128     }else if (editingStyle == UITableViewCellEditingStyleInsert){129         //添加數據130         //添加一行131         [[self.DataArray objectAtIndex:indexPath.section] insertObject:@"Ager" atIndex:indexPath.row];132         [tableView insertRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationRight];133     }134 }135 136 137 #pragma mark --- cell 移動 ---138 139 140 /**141  *  移動行142  *143  */144 - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{145     146     //先存儲要移動的數據147     NSString *str = [[self.DataArray objectAtIndex:sourceIndexPath.section] objectAtIndex:sourceIndexPath.row];148     //刪除原數據149     [[self.DataArray objectAtIndex:sourceIndexPath.section] removeObjectAtIndex:sourceIndexPath.row];150     //在要移動到地方添加數據151     [[self.DataArray objectAtIndex:destinationIndexPath.section] insertObject:str atIndex:destinationIndexPath.row];152     [tableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];153 }154 155 156 /**157  *  限定移動范圍158  */159 - (NSIndexPath*)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath{160     if (sourceIndexPath.section == proposedDestinationIndexPath.section) {161         return proposedDestinationIndexPath;162     }else {163         return sourceIndexPath;164     }165 }166 167 168 #pragma mark --- 添加按鈕的方法實現 ---169 170 171 /**172  *  點擊刪除按鈕173  */174 - (void)setEditing:(BOOL)editing animated:(BOOL)animated{175     176     style = UITableViewCellEditingStyleDelete;177     [super setEditing:editing animated:animated];178     //關聯 tableView179     [self.rootView.tableView setEditing:editing animated:animated];180     self.editButtonItem.title = editing ? @"完成":@"刪除";181 }182 183 184 /**185  *  點擊添加按鈕186  */187 - (void)insertAction:(UIBarButtonItem *)sender{188     style = UITableViewCellEditingStyleInsert;189     addFlag = !addFlag;190     [self.rootView.tableView setEditing:addFlag animated:YES];191     sender.title = addFlag ? @"完成":@"添加";192 }193 194 - (void)didReceiveMemoryWarning {195     [super didReceiveMemoryWarning];196     // Dispose of any resources that can be recreated.197 }198 199 /*200 #pragma mark - Navigation201 202 // In a storyboard-based application, you will often want to do a little preparation before navigation203 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {204     // Get the new view controller using [segue destinationViewController].205     // Pass the selected object to the new view controller.206 }207 */208 209 @end

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情小视频| 国产精品久久在线观看| 国产成人精品999| 国产最新精品视频| 欧美激情国产精品| 久久人91精品久久久久久不卡| 成人在线观看视频网站| 欧美激情极品视频| 国产精品三级久久久久久电影| 91欧美日韩一区| 国产精品久久久久av| 日韩第一页在线| 久久久亚洲国产天美传媒修理工| 成人免费视频在线观看超级碰| 日本一区二区在线免费播放| 992tv成人免费视频| 国产不卡av在线| 伦伦影院午夜日韩欧美限制| 日韩视频在线免费| 精品国产网站地址| 精品magnet| 久久国产加勒比精品无码| 亚洲欧美一区二区三区在线| 狠狠躁夜夜躁人人爽天天天天97| 欧美日韩美女视频| 91精品久久久久久久久中文字幕| 亚洲精品videossex少妇| 亚洲欧洲第一视频| 欧美精品video| www.久久草.com| 日本久久久久久久久| 亚洲人成绝费网站色www| 久久精品影视伊人网| 亚洲国产欧美日韩精品| 欧美一乱一性一交一视频| 国产精品一香蕉国产线看观看| 精品视频在线导航| 正在播放欧美视频| 国产午夜精品视频免费不卡69堂| 中文字幕9999| 岛国av一区二区三区| 亚洲a中文字幕| 欧美最猛性xxxx| 亚洲美女精品久久| 国产欧美婷婷中文| 中文字幕亚洲综合久久| 国内精久久久久久久久久人| 欧美特级www| 亚洲va久久久噜噜噜久久天堂| 欧美视频专区一二在线观看| 亚洲最大的成人网| 亚洲人精品午夜在线观看| 精品亚洲男同gayvideo网站| 久久精品国产亚洲精品| 国产精品福利观看| 国产精品久久网| 在线看福利67194| 亚洲精品一区二区在线| 亚洲网站在线观看| 色yeye香蕉凹凸一区二区av| 色噜噜国产精品视频一区二区| 国产精品日本精品| 久色乳综合思思在线视频| 97在线观看免费| 欧美最顶级的aⅴ艳星| 久久亚洲精品一区| 精品福利樱桃av导航| 91国产视频在线播放| 伊人久久久久久久久久久| 97久久精品人人澡人人爽缅北| 少妇高潮 亚洲精品| 亚洲国产99精品国自产| 欧美黑人xxxx| 日韩免费看的电影电视剧大全| 国产不卡av在线免费观看| 国产在线观看91精品一区| 在线视频日韩精品| 中文字幕亚洲无线码在线一区| 欧美综合一区第一页| 日韩精品999| 亚洲va久久久噜噜噜| 欧美激情国产精品| 欧洲永久精品大片ww免费漫画| 国产欧美一区二区三区久久人妖| 日日摸夜夜添一区| 尤物九九久久国产精品的分类| 日韩av免费一区| 久久久中精品2020中文| 九九九久久国产免费| 日韩av在线看| 中文字幕日韩av电影| xxxxxxxxx欧美| 97久久国产精品| 91精品国产综合久久香蕉最新版| 亚洲国产91精品在线观看| 国产主播喷水一区二区| 日韩不卡在线观看| 91国内免费在线视频| 成人久久18免费网站图片| 欧美大尺度电影在线观看| 91豆花精品一区| 欧美激情免费视频| 亚洲黄色片网站| 国产精品第2页| 欧美成人激情视频免费观看| 欧美巨乳美女视频| 一个人看的www欧美| 精品亚洲一区二区| 97精品国产97久久久久久春色| 亚洲精品成a人在线观看| 欧美精品福利在线| 欧洲永久精品大片ww免费漫画| 中国日韩欧美久久久久久久久| 欧美成在线观看| 久久精品电影网| 97在线看免费观看视频在线观看| 欧美在线一级视频| 国产欧美日韩视频| 成人激情在线播放| 国产女人精品视频| 久久色免费在线视频| 国产午夜精品视频免费不卡69堂| 亚洲色图美腿丝袜| www.99久久热国产日韩欧美.com| 国产日韩欧美日韩| 欧美日韩色婷婷| 日韩一区二区欧美| 啪一啪鲁一鲁2019在线视频| 粗暴蹂躏中文一区二区三区| 欧美视频不卡中文| 亚洲午夜精品视频| 久久久视频精品| 欧美日韩一区二区免费在线观看| 国内免费精品永久在线视频| 久久久精品一区二区三区| 亚洲美女在线视频| 国产色视频一区| 久久久国产视频| 日韩av色在线| 国产精品福利在线观看网址| 一区二区三区国产在线观看| 日韩欧美国产视频| 欧美日韩国产精品一区二区三区四区| 69久久夜色精品国产69乱青草| 法国裸体一区二区| 少妇av一区二区三区| 欧美日韩黄色大片| 国产精品视频不卡| 国产亚洲精品久久久久久| 在线观看欧美成人| 欧美日本中文字幕| 久久精品成人一区二区三区| 国产日韩欧美视频在线| 在线视频欧美性高潮| 亚洲a成v人在线观看| 在线播放日韩专区| 欧美日韩国产综合视频在线观看中文| 久久天堂av综合合色| 韩国视频理论视频久久| 亚洲成色777777女色窝| 久久久久久久久久av| 亚洲欧美一区二区三区情侣bbw| 色yeye香蕉凹凸一区二区av| 国产精品视频白浆免费视频|