自定义UITableViewCells的UITextField在滚动后混合

时间:2012-05-08 08:23:49

标签: ios uitableview

我使用UITableViewCellUITextFieldUILabels创建了自定义UIButtons。当我向UITextField输入一个值并向下滚动时,它会消失并显示在另一个随机单元格中。我的UIButton也会出现同样的问题,当我按下它时,状态正在改变,但在我向下滚动后,它会消失。

这是我的cellForRowAtIndexPath:

   - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"produktCell";
    //NSString *CellIdentifier = [NSString stringWithFormat:@"produktCell %d",indexPath.row];

    ProduktTableViewCell *cell =(ProduktTableViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
          NSLog(@"wird neu erstellt");
        cell = [[ProduktTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }



    NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];

    cell.produktnameLabel.text = [managedObject valueForKey:@"produktname"]; 



    if ([[managedObject valueForKey:@"vondatum"] length] > 1){
        cell.vonDatumLabel.text = [managedObject valueForKey:@"vondatum"];
        cell.bisDatumLabel.text = [managedObject valueForKey:@"bisdatum"]; 

    }else {
        cell.vonDatumLabel.text = dateString;
        cell.bisDatumLabel.text = dateString1;
    }  


        cell.datumButton.tag = indexPath.row;
    cell.warenkorbButton.tag = indexPath.row;
    cell.menge.tag = indexPath.row + 437812;
    cell.mengeLabel.text = [managedObject valueForKey:@"mengelabel"];
    cell.produktnameLabel.tag = indexPath.row +22333;
    cell.mengeLabel.tag =indexPath.row;


    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    NSLocale *german = [[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"];
    [formatter setLocale:german];
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [formatter setMinimumFractionDigits:2];
    [formatter setMaximumFractionDigits:2];


    NSNumber *firstNumber = [managedObject valueForKey:@"preis"];

    cell.preisLabel.text = [formatter stringFromNumber:firstNumber];



    return cell;
}
编辑:我修复了文本字段的问题。我只是删除了方法:

   /*- (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView
{


   [[self.tableView superview] endEditing:YES];


}*/

但我的按钮仍有问题。

1 个答案:

答案 0 :(得分:0)

我最好的猜测是,您正在重复使用的细胞正在接收与您刚刚交互的细胞相同的行为。你可以快速尝试一下我的意思。评论这个:

编辑:

   ProduktTableViewCell *cell =(ProduktTableViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
          NSLog(@"wird neu erstellt");
        cell = [[ProduktTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

改为:

ProduktTableViewCell *cell = [[ProduktTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

这样,您的新单元格将不会获得与前一单元格相同的“状态”。接下来你需要做的是知道你正在做哪个细胞。除此之外,您仍然需要重置新单元格的状态。 要完成,请取消注释我要求您发表评论的内容(因为您希望您的单元格可以重复使用)