你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS7技巧 >> 解決cell 復用導致的tableViewcell 多選狀態消失問題方法

解決cell 復用導致的tableViewcell 多選狀態消失問題方法

編輯:IOS7技巧
下面我們來看一篇關於解決cell 復用導致的tableViewcell 多選狀態消失問題方法,希望這篇教程對各位能夠有所幫助。

在項目中我們經常會遇到tableviewcell多選的情況,但是因為cell復用,導致一個cell滑出界面後再返回的時候,cell的選中狀態會消失,具體的解決辦法 我們可以使用nsmutableset ,nsmutableset 和nsarray類似,有addObject:  removeObject: 兩種添加和移除數據的方法,這樣在選中cell的時候我們可以將cell的indexPath或者cell上控件的tag值加入nsmutableset中,在cell復用的時候通過containsObject:這個方法來判斷是否給cell賦上選中狀態.下面是大致的實現方法.

#pragma mark – 返回每一行顯示的內容(每一行顯示怎樣的cell)

– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

ShoppingCartTableViewCell *cell = (ShoppingCartTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@”ShoppingCartTableViewCell”];

if (cell == nil) {

cell = [[[NSBundle mainBundle] loadNibNamed:@”ShoppingCartTableViewCell” owner:self options:nil] lastObject];

cell.selectionStyle = UITableViewCellSelectionStyleNone;

//        cell.numberTextField.text = @”111″;

}

GoodCartInfoModel *model = dataArray[indexPath.row];

[cell addTheValue:model];

cell.delegate = self;

cell.selectButton.tag = 100 + indexPath.row;

cell.selectButton.selected = NO;

 

[cell.selectButton addTarget:self action:@selector(selectButtonClick:) forControlEvents:(UIControlEventTouchUpInside)];

if ([btnStatusSet containsObject:[NSString stringWithFormat:@”%d”,(100 + indexPath.row)]]) {

cell.selectButton.selected = YES;

[cell.selectButton setImage:[UIImage imageNamed:@”btn_select_default”] forState:(UIControlStateNormal)];

}

 

return cell;

}

-(void)selectButtonClick:(UIButton *)btn

{

if (btn.selected == NO) {

btn.selected = YES;

[btnStatusSet addObject:[NSString stringWithFormat:@”%d”,btn.tag]];

 

}else

{

btn.selected = NO;

[btnStatusSet removeObject:[NSString stringWithFormat:@”%d”,btn.tag]];

}

}

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved