2012-05-08 2 views
0

Я создал таможню UITableViewCell с UITextField, UILabels и UIButtons. Когда я ввожу значение в UITextField и прокручиваю вниз, оно исчезает и отображается в другой случайной ячейке. Такая же проблема возникает и с моим UIButton, когда я нажимаю его, состояние меняется, но после прокрутки вниз оно исчезает.UITextField UITableViewCells UITextField после прокрутки

Вот мой 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; 
} 

EDIT: я установил мою проблему с текстовым полем. Я просто удаляю метод:

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


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


}*/ 

, но есть проблема с моей кнопкой.

ответ

0

Мое лучшее предположение заключается в том, что ваши ячейки, которые повторно используются, получают одинаковое поведение ячейки, с которой вы только что взаимодействовали. Вы можете попробовать что-то быстрое, чтобы понять, что я имею в виду. Комментарий это:

Edit:

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]; 

Таким образом, ваши новые клетки не получат то же самое "состояние" в качестве предыдущей ячейки. Что вам нужно сделать дальше, это знать, в какой ячейке вы работаете. Кроме того, вам все равно нужно сбросить состояние новых ячеек. Чтобы закончить, раскомментируйте то, что я сказал вам, чтобы комментировать (поскольку вы хотите, чтобы ваши ячейки были повторно использованы)

+0

, когда я прокомментирую эту строку, он имеет такое же поведение. tableview все еще смешивается. –

+0

Check my Edit .. – Peres

+0

Я попробовал, но я не могу войти (cell == nil). tableview пуст, и NSLog не вызывается. –

Смежные вопросы