iOS學習之UITableView中Cell的操作

來源:互聯網
上載者:User

接著iOS學習之Table View的簡單使用 這篇,這裡主要講UITableView 中的Cell的操作,包括標記、移動、刪除、插入。

為了簡單快捷,直接從原來那篇的代碼開始,代碼:http://download.csdn.net/detail/totogo2010/4361870

要進行資料的操作了,把代碼裡的不可變數組改成可變的:

NSArray *list -》NSMutableArray *list 

1、標記Cell。

效果如下:

開啟項目,

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath。

添加代碼

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{//    NSString *rowString = [self.list objectAtIndex:[indexPath row]];//    UIAlertView * alter = [[UIAlertView alloc] initWithTitle:@"選中的行資訊" message:rowString delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];//    [alter show];    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];    if (cell.accessoryType == UITableViewCellAccessoryNone) {        cell.accessoryType = UITableViewCellAccessoryCheckmark;    }else {        cell.accessoryType = UITableViewCellAccessoryNone;    }    [tableView deselectRowAtIndexPath:indexPath animated:YES];}

標記分別有四種效果:

UITableViewCellAccessoryCheckmark
UITableViewCellAccessoryDetailDisclosureButton
UITableViewCellAccessoryDisclosureIndicator
UITableViewCellAccessoryNone

可以自己試試。

2、刪除Cell

想要實現移動或者刪除行這樣的操作,需要啟動表格的編輯模式。使用的是setEditing:animated:方法。

開啟xib,產生Table的IBoutlet映射  tableView;

在viewDidload裡添加

    [self.tableViewsetEditing:YES];

這是啟動運行程式,

開啟可編輯模式,預設情況顯示刪除的表徵圖的。

實現刪除的代碼:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {    NSUInteger row = [indexPath row];    if (editingStyle == UITableViewCellEditingStyleDelete) {        [self.list removeObjectAtIndex:row];         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]                         withRowAnimation:UITableViewRowAnimationAutomatic];     }}

這個方法根據參數editingStyle是UITableViewCellEditingStyleDelete

在這刪除行的方法又出現了一個常量:UITableViewRowAnimationAutomatic,它表示刪除時的效果,類似的常量還有:
UITableViewRowAnimationAutomatic
UITableViewRowAnimationTop
UITableViewRowAnimationBottom
UITableViewRowAnimationLeft
UITableViewRowAnimationRight
UITableViewRowAnimationMiddle
UITableViewRowAnimationFade
UITableViewRowAnimationNone

從常量名稱開啟可以看出效果來。

這是運行,就可以刪除其中的一個Cell行了。

3、移動Cell

添加代碼如下:

3.1先把預設的刪除的表徵圖去掉

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {     return UITableViewCellEditingStyleInsert; } 

3.2返回當前Cell是否可以移動

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {     return YES; }

3.3執行移動操作

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {    NSUInteger fromRow = [sourceIndexPath row];     NSUInteger toRow = [destinationIndexPath row];         id object = [self.list objectAtIndex:fromRow];     [self.list removeObjectAtIndex:fromRow];     [self.list insertObject:object atIndex:toRow]; }

運行程式:

怎麼移動呢?不要以為按住行的任何地方都能移動,要按住最左邊的三道杠的表徵圖才能拖動移動

4、插入cell:

4.1插入和刪除差不多,在

- (void)tableView:(UITableView *)tableView commitEditingStyle:

(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

添加UITableViewCellEditingStyleInsert判斷

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {    NSUInteger row = [indexPath row];    if (editingStyle == UITableViewCellEditingStyleDelete) {        [self.list removeObjectAtIndex:row];         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]                         withRowAnimation:UITableViewRowAnimationAutomatic];     }else if(editingStyle == UITableViewCellEditingStyleInsert ){        NSArray *insertIndexPaths = [NSArray arrayWithObjects:indexPath,nil];        [self.list insertObject:@"inset new Cell" atIndex:row];        [tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationMiddle];    }}

4.2 修改表徵圖為插入樣式。

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {     return UITableViewCellEditingStyleInsert; } 

運行,點加號表徵圖,

完成!

例子代碼:http://download.csdn.net/detail/totogo2010/4398669

著作權聲明:本文由http://blog.csdn.net/totogo2010/原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.