

大家都知道tableview的復用當然不知道的話可以個我留言或者在網上找 在這我就不多說了;
紅色就是選中狀態,但是這時候我們會發現往下拉當cell消失后出來新的cell中的button也是選中狀態。話不多說下面上解決方法的代碼!
-(NSMutableArray *)boolArr{
//創建一個數組在這里數組中的NSNumber對象的下標是於 indexPath一一對應的這里我給他一百個根據自身的情況賦值
if (_boolArr==nil) {
NSMutableArray *arr = [NSMutableArray array];
for (int i=0; i<100; i++) {
NSNumber *aNumber = [NSNumber numberWithInteger:100];//在這里給aNumber賦值100 也就是數組中有100個,值為100的NSNumber的對象 ,在這里注意我是通過改變aNumber來標示button是否為選中狀態。
[arr addObject:aNumber];
}
_boolArr = arr;
}
return _boolArr;
}
//////////
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
//每區的行數
return 100;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
TableViewCell1 *cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath];//初始化cell
__block ViewController *vc = self;
UIButton *but = (UIButton *)[cell viewWithTag:100];//得到cell的button
//用block進行傳值
cell.block = ^(){
// 取出cell的indexPath.row 對應bollArr下標的值
NSNumber *bo= vc.boolArr[indexPath.row];
// 更改bo的值用
bo = [NSNumber numberWithInteger:1];
//然后替換bollArr原先的值
[vc.boolArr replaceObjectAtIndex:indexPath.row withObject:bo];
//把but的選中狀態變為yes
but.selected = YES;
};
//用這個方法來判斷but是否為選中狀態
[self addSelected:but addIndexPath:indexPath.row];
return cell;
}
-(void)addSelected:(UIButton *)sender addIndexPath:(NSInteger)indexPath{
//取出於cell的row對應的self.bollArr中的值
NSNumber *bo= self.boolArr[indexPath];
//然后轉化為NSInteger類型
NSInteger bollTge = bo.integerValue;
//然后判斷值是否被更改
//100 沒有被更改 no
//1 已被修改 yes
if (bollTge==100) {
sender.selected = NO;
}else{
sender.selected = YES;
}
}
因為時間原因我並沒有寫取消選中狀態的方法 只需要寫一個boll值進行判斷就可以了 希望可以幫助大家 我也是ios的初學者
如果大家有什么更簡便的方法 在這里真心求教
本人qq:627400364 真心尋找和我一樣走在編程這個不歸路的朋友 讓我們互幫互助 嗯~~~痛並快樂着 哈哈
