Rumah > Soal Jawab > teks badan
将UITableViewCell对象cell添加进NSMutableArray后,后续取值时,cell的textLable的text属性出现错乱,与cell本来的textLable的text不同,这是什么原因造成的呢?
比如:
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString * timeRing = @"ring";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:timeRing];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:timeRing];
}else{
while ([cell.contentView.subviews lastObject]!=nil) {
[[cell.contentView.subviews lastObject] removeFromSuperview];
}
}
cell.accessoryType = UITableViewCellAccessoryNone;
if (self.cellArray.count<self.ringArray.count) {
self.timeRingItem = self.ringArray[indexPath.row];
cell.tintColor = [UIColor redColor];
cell.textLabel.text= self.timeRingItem.ringName;
[self.cellArray addObject:cell];
}
else{
cell = self.cellArray[indexPath.row];
}
return cell;
}
这种情况下cell = self.cellArray[indexPath.row];
就会失效,取出来的值是错乱的
巴扎黑2017-04-17 17:46:27
Masalah telah selesai, sila jawab sendiri.
Sebabnya ialah sel yang disimpan dalam tatasusunan pada asasnya adalah penunjuk kepada objek Apabila sel digunakan semula, penunjuk menunjuk ke objek sebelum digunakan semula dan nilai yang diperolehi ialah nilai sel sebelum digunakan semula. Oleh itu, kekeliruan nilai akan berlaku Penyelesaiannya adalah untuk menyimpan setiap atribut sel dalam tatasusunan secara berasingan, atau menggunakan model terlebih dahulu untuk menetapkan semula nilai apabila menggunakan semula sel.