對於app應用來講,使用列表的形式展示數據非UITableView莫屬.在熟練掌握了用UITableView展現數據之後,是否是也遇到了須要刪除數據的需求?是否是以爲在一行數據上划動一下,而後出現一個刪除按鈕很酷?廢話少說,直奔正題,就由筆者來向您展現一下這個功能的實現是多麼容易. 先前的準備工做: 第一步,準備好數據源. #import <UIKit/UIKit.h> @interface UITableCellSwapDeleteViewController : UIViewController <UITableViewDelegate>{ IBOutlet UITableView *testTableView; NSMutableArray *dataArray; } @property (nonatomic, retain) UITableView *testTableView; @property (nonatomic, retain) NSMutableArray *dataArray; @end - (void)viewDidLoad { [super viewDidLoad]; dataArray = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",nil]; } 這裏筆者定義了並實現了一個一維的可變數組.爲何要用可變數組呢?由於咱們要刪除裏面的數據呀. 第二步,展現數據. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [dataArray count]; } // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } // Configure the cell... cell.textLabel.text = [dataArray objectAtIndex:indexPath.row]; return cell; } 經過實現上面三個代理方法向UITableView中添加了數據. 經過上面兩步就實現了數據展現工做,接下就實現關鍵的數據刪除了. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { [dataArray removeObjectAtIndex:indexPath.row]; // Delete the row from the data source. [testTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view. } } 啓用上面兩個代理,並增長數據刪除操做: [dataArray removeObjectAtIndex:indexPath.row]; 在一條數據上向右划動一下. 點Delete. 是否是就成功刪除了一條數據呢? 按理說故事講到這裏也就講完了.可是筆者想延伸一下.注意看圖二劃動之後的"Delete",你有沒有想把這個東東改掉的衝動呢?好比改爲:下載?其實很簡單,其實下面這個代理方法: - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{ return @"下載"; }
iOS中的UITableView,在上面滑動時,能夠出現一個「刪除」按鈕,來進行刪除操做。
可是,有些時候,因爲實現方法不對,滑動時,這個按鈕卻顯示不出來。分析了一下緣由,大概以有下幾個要素: 數組