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

来源:互联网 发布:淘宝卖面膜怎么样 编辑:程序博客网 时间:2024/05/22 03:30

最近脑子秀逗了
最近开始手写购物车,在自定义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
原创粉丝点击