[iOS tableViewCell 复用] xib自定义cell 修改cell中按钮状态 出现按钮状态被复用

最近脑子秀逗了
最近开始手写购物车,在自定义tableviewcell之后,在自定义的cell中添加一个可以选中的按钮,啥也没想就去register 然后设置代理,在vc中去修改按钮状态
btn.selected = !btn.selected
然后去看效果啊,恩 cell 的第一个被选中了, 然后往下一拉,screen外面的一个cell上的按钮状态 也是处于被选中状态,哭

下面是百度来的办法, 个人感觉第一个不咋地 btn就是要能复用才有意思么

网络方法一:
http://www.cocoachina.com/bbs/read.php?tid-212837-page-2.html
不要在cell里面创建btn,在调用UITableView之前,将btn创建好,然后在生成cell的时候,再将btn添加到cell的contentView上面,这样就不会出现复用的问题

网络方法二:
http://www.cocoachina.com/bbs/read.php?tid-1687855.html
解决办法:
cell 添加一个外部property
@property (nonatomic) BOOL isSelect;
需要在cell中重写layoutsubviews方法
在其中,根据你的isSelect设置你的button状态 


三:
http://www.cocoachina.com/bbs/read.php?tid-1483416.html

四:
http://www.cocoachina.com/bbs/read.php?tid=1486063

后来自己回想了下 现在

记录一下 解决办法

1.自定义cell中有按钮,cell肯定是要被复用的

2.处理的核心是,在cell 的 btn的代理方法中, 修改其model中的isSelected (BOOL) 属性

3.reloadData 刷新

贴代码:

1.在自定的cell中使用model来修改按钮状态:

- (void)setModel:(JFShopCarModel *)model{
    _model = model;
    _chooseBtn.selected = model.isSelected;
}

2.在控制器中 实现代理方法 并刷新tableview

#pragma mark - CarBuyListDelete
-(void)chooseBtnClickDelegate:(UIButton *)btn model:(JFShopCarModel *)model{
    //
    if ([self.selectedShopArray containsObject:model]) {
        [self.selectedShopArray removeObject:model];
        model.isSelected = NO;
    }
    else{
        [self.selectedShopArray addObject:model];
        model.isSelected = YES;
    }
    [_tableShowView reloadData];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值