cell的增加/刪除/更新等操作

在tableView的使用過程中,有時(shí)會需要增加或刪除某些cell數(shù)據(jù).不管是添加還是刪除,我們都應(yīng)該操作模型數(shù)據(jù),因?yàn)閏ell是會被重新利用的,如果直接對cell進(jìn)行修改,會導(dǎo)致重用后數(shù)據(jù)錯(cuò)亂,造成不必要的麻煩.

增加cell數(shù)據(jù)

在控制器中添加一個(gè)按鈕,改名為添加,拖線到實(shí)現(xiàn)代碼中,用來監(jiān)聽點(diǎn)擊事件.
添加方法需要記錄用戶輸入的內(nèi)容,添加到模型中,然后再刷新tableView即可.
在方法中實(shí)現(xiàn)以下內(nèi)容:


- (IBAction)add:(id)sender {
    //創(chuàng)建消息控制器
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"請輸入團(tuán)購數(shù)據(jù)" message:nil preferredStyle:UIAlertControllerStyleAlert];
    //添加輸入文本框
    [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        textField.placeholder = @"請輸入標(biāo)題";//設(shè)置占位文本
    }];
    [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        textField.placeholder = @"請輸入價(jià)格";
    }];
    [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        textField.placeholder = @"請輸入購買數(shù)";
    }];
    //添加操作按鈕
    [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
    [alert addAction:[UIAlertAction actionWithTitle:@"確認(rèn)" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
        //創(chuàng)建模型
        DLShop *shop = [[DLShop alloc] init];
        //設(shè)置模型數(shù)據(jù)
        shop.title = [alert.textFields[0] text];
        shop.price = [alert.textFields[1] text];
        shop.buyCount = [alert.textFields[2] text];
        //將新數(shù)據(jù)添加到數(shù)組
        [self.shops insertObject:shop atIndex:0];
        //刷新表格(可視行,不帶動畫)
//        [self.tableView reloadData];
        //刷新表格(單行,帶動畫,性能優(yōu)化)
        [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
    }]];
    //顯示消息框
    [self presentViewController:alert animated:YES completion:nil];
}

刪除cell數(shù)據(jù)(單行,系統(tǒng)自帶)

在控制器中添加一個(gè)按鈕,改名為刪除,拖線到實(shí)現(xiàn)代碼中,用來監(jiān)聽點(diǎn)擊事件.
系統(tǒng)自帶的刪除方法實(shí)現(xiàn)比較簡單,只需實(shí)現(xiàn)下面的方法,然后刷新tableView即可.
代碼如下:

 * 只要實(shí)現(xiàn)這個(gè)方法温算,左劃cell出現(xiàn)刪除按鈕的功能就有了
 * 用戶提交了添加(點(diǎn)擊了添加按鈕)\刪除(點(diǎn)擊了刪除按鈕)操作時(shí)會調(diào)用
 */
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //刪除模型數(shù)據(jù)
        [self.shops removeObjectAtIndex:indexPath.row];
        //刪除對應(yīng)行
        [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}

刪除cell數(shù)據(jù)(多行)

在控制器中添加一個(gè)按鈕,改名為刪除,拖線到實(shí)現(xiàn)代碼中,用來監(jiān)聽點(diǎn)擊事件.
刪除cell比較簡單,只需將選中的數(shù)據(jù)記錄到可變數(shù)組,從模型中刪除可變數(shù)組內(nèi)容,然后刷新tableView即可.
代碼如下:

1.在模型中添加一個(gè)狀態(tài)屬性

/** 狀態(tài)量標(biāo)識有無被打鉤 */
@property (assign, nonatomic, getter=isChecked) BOOL checked;

2.在cell中添加一張圖片,設(shè)置圖片的內(nèi)容為對勾,并設(shè)置圖片默認(rèn)隱藏.將圖片拖線至自定義類中,修改set方法,設(shè)置圖片的顯示狀態(tài)(顯示或隱藏)

 // 設(shè)置打鉤控件的顯示和隱藏
    self.checkView.hidden = !deal.isChecked;

3.設(shè)置remove方法

- (IBAction)remove:(id)sender {
    // 臨時(shí)數(shù)組:存放即將需要刪除的團(tuán)購數(shù)據(jù)
    NSMutableArray *deleteShops = [NSMutableArray array];
    //遍歷模型數(shù)據(jù),取出被選中的數(shù)據(jù)
    for (DLShop *shop in self.shops) {
        //將數(shù)據(jù)添加到可變數(shù)組中
        if (shop.isChecked) [deleteShops addObject:shop];  
    }
    //刪除可變數(shù)組的模型數(shù)據(jù)
    [self.shops removeObjectsInArray:deleteShops];
    //刷新表格
    [self.tableView reloadData];
    //清空可變數(shù)組
    [deleteShops removeAllObjects];  
}

刪除cell數(shù)據(jù)(多行,系統(tǒng)自帶)

首先添加一個(gè)批量操作按鈕,拖到實(shí)現(xiàn)代碼中,監(jiān)聽點(diǎn)擊事件,
實(shí)現(xiàn)如下代碼:

1.
- (void)viewDidLoad {
    [super viewDidLoad];
     // 允許在編輯模式進(jìn)行多選操作
    self.tableView.allowsMultipleSelectionDuringEditing = YES;
 }
 
 2.在批量操作按鈕方法下實(shí)現(xiàn):
 - (IBAction)multiOperation:(id)sender {
   //對選中狀態(tài)進(jìn)行取反
    [self.tableView setEditing:!self.tableView.isEditing animated:YES];
}
3.在刪除按鈕實(shí)現(xiàn)以下代碼:
- (IBAction)remove {
    // 獲得所有被選中的行
    NSArray *indexPaths = [self.tableView indexPathsForSelectedRows];

    // 遍歷所有的行號
    NSMutableArray *deletedShops = [NSMutableArray array];
    for (NSIndexPath *path in indexPaths) {
        [deletedShops addObject:self.shops[path.row]];
    }
    // 刪除模型數(shù)據(jù)
    [self.shops removeObjectsInArray:deletedShops];
    
   // 刷新表格  一定要刷新數(shù)據(jù)
    [self.tableView reloadData];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末地淀,一起剝皮案震驚了整個(gè)濱河市贫贝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖街图,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件划提,死亡現(xiàn)場離奇詭異崔涂,居然都是意外死亡关顷,警方通過查閱死者的電腦和手機(jī)糊秆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來议双,“玉大人痘番,你說我怎么就攤上這事∑教担” “怎么了汞舱?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宗雇。 經(jīng)常有香客問我昂芜,道長,這世上最難降的妖魔是什么赔蒲? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任泌神,我火速辦了婚禮,結(jié)果婚禮上舞虱,老公的妹妹穿的比我還像新娘欢际。我一直安慰自己,他們只是感情好矾兜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布损趋。 她就那樣靜靜地躺著,像睡著了一般椅寺。 火紅的嫁衣襯著肌膚如雪舶沿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天配并,我揣著相機(jī)與錄音括荡,去河邊找鬼。 笑死溉旋,一個(gè)胖子當(dāng)著我的面吹牛畸冲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播观腊,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼邑闲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了梧油?” 一聲冷哼從身側(cè)響起苫耸,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎儡陨,沒想到半個(gè)月后褪子,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體量淌,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年嫌褪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呀枢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡笼痛,死狀恐怖裙秋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缨伊,我是刑警寧澤摘刑,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站刻坊,受9級特大地震影響泣侮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜紧唱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一活尊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧漏益,春花似錦蛹锰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至轻庆,卻和暖如春癣猾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背余爆。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工纷宇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蛾方。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓像捶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桩砰。 傳聞我的和親對象是個(gè)殘疾皇子拓春,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容