cari

Rumah  >  Soal Jawab  >  teks badan

objective-c - iOS关于NSMutableArray保存UITableViewCell对象后,cell取值出现错乱,请问什么原因?

将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];就会失效,取出来的值是错乱的

PHP中文网PHP中文网2811 hari yang lalu388

membalas semua(1)saya akan balas

  • 巴扎黑

    巴扎黑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.

    balas
    0
  • Batalbalas