Algunas células UITableView desaparecen después de desplazarse hacia abajo y luego hacia atrás

Tengo cuatro UITableViews lado a lado, creado mediante progtwigción. Problema 1: la 1ª celda siempre está en blanco. Problema 2: Cuando me desploop hacia abajo, algunas celdas están en blanco. Cuando me desploop hacia atrás y hacia adelante, otras células desaparecen.

Aquí está el código donde se crean las UITableViews , y sus celdas están configuradas …

Matriz de UITableViews declarada al principio del file .m :

 UITableView* channel_tableView[ TOTAL_TX_CHANNELS ]; 

En viewDidLayoutSubviews function, creo el UITableView :

  for( int channel=0; channel < TOTAL_TX_CHANNELS; ++channel ){ CGRect tableFrame = CGRectMake(x, y, width, height); channel_tableView[ channel ] = [[UITableView alloc]initWithFrame:tableFrame style:UITableViewStylePlain]; channel_tableView[ channel ].scrollEnabled = YES; channel_tableView[ channel ].userInteractionEnabled = YES; channel_tableView[ channel ].bounces = YES; channel_tableView[ channel ].delegate = self; channel_tableView[ channel ].dataSource = self; channel_tableView[ channel ].autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; [channel_tableView[ channel ] reloadData]; // display channel's TableView [[self view] addSubview: channel_tableView[ channel ]]; 

}

AQUÍ ESTÁ DONDE SE ENCUENTRA CADA CÉLULA …………………..

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSLog( @"cellForRowAtIndexPath"); NSLog( @" %d = row", indexPath.row ); UITextView* test_textView; UITextView* test_2nd_textView; UITextView* test_3rd_textView; // Determine which channel_tableView: int channel; for( channel = 0; channel < TOTAL_TX_CHANNELS; ++channel ) { if( tableView == channel_tableView[ channel ] ) break; } // channel = tableView's channel NSLog( @" %d = channel", channel ); // DOCUMENTATION: Table View Programming Guide for iOS > Adding subviews to a cellís content view static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { NSLog( @" cell nil"); cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: CellIdentifier]; /* Though it's UITableViewCellStyleDefault, the three defaults (image, label, detail label) are nil if not set. */ } // Add UITextView for channel pipe to cell: int pipe_width = 20; int w = pipe_width; int x = channel_tableView_width/2 - pipe_width/2; int h = channel_row_height; int y = 0; test_textView = [[UITextView alloc] initWithFrame:CGRectMake (x,y, w,h)] ; [test_textView setFont:[UIFont boldSystemFontOfSize:8.0]]; [test_textView setEditable:NO]; [test_textView setTextAlignment:NSTextAlignmentCenter]; // Round the corners and set border color if(channel == power_channel ) [test_textView setBackgroundColor:[UIColor greenColor]]; else [test_textView setBackgroundColor:[UIColor whiteColor]]; [[test_textView layer] setBorderColor:[[UIColor blackColor] CGColor]]; [[test_textView layer] setBorderWidth:1]; //[[test_textView layer] setCornerRadius:15]; [test_textView setClipsToBounds: YES]; // Add UITextView for PWR RX to cell: int PWR_RX_width = channel_tableView_width/2; y = y + h ; w = PWR_RX_width; x = channel_tableView_width/2 - PWR_RX_width/2; h = 20; test_2nd_textView = [[UITextView alloc] initWithFrame:CGRectMake (x,y, w,h)]; [test_2nd_textView setFont:[UIFont boldSystemFontOfSize:8.0]]; [test_2nd_textView setEditable:NO]; [test_2nd_textView setTextAlignment:NSTextAlignmentCenter]; // Round the corners and set border color [test_2nd_textView setBackgroundColor:[UIColor whiteColor]]; [[test_2nd_textView layer] setBorderColor:[[UIColor blackColor] CGColor]]; [[test_2nd_textView layer] setBorderWidth: 1]; //[[test_2nd_textView layer] setCornerRadius:15]; [test_2nd_textView setClipsToBounds: YES]; // Add UITextView for device to cell: int device_width = channel_tableView_width/2; y = y + h-3; w = device_width; x = channel_tableView_width/2 - device_width/2; h = 40; test_3rd_textView = [[UITextView alloc] initWithFrame:CGRectMake (x,y, w,h)]; [test_3rd_textView setFont:[UIFont boldSystemFontOfSize:8.0]]; [test_3rd_textView setEditable:NO]; [test_3rd_textView setTextAlignment:NSTextAlignmentCenter]; // Round the corners and set border color [test_3rd_textView setBackgroundColor:[UIColor whiteColor]]; [[test_3rd_textView layer] setBorderColor:[[UIColor blackColor] CGColor]]; [[test_3rd_textView layer] setBorderWidth: 1]; //[[test_3rd_textView layer] setCornerRadius:15]; [test_3rd_textView setClipsToBounds: YES]; /* test_textView.tag = TEST_TEXTVIEW_TAG; test_2nd_textView.tag = TEST_2ND_TEXTVIEW_TAG; test_3rd_textView.tag = TEST_3RD_TEXTVIEW_TAG; test_textView = (UITextView*)[cell.contentView viewWithTag: TEST_TEXTVIEW_TAG]; test_2nd_textView = (UITextView*)[cell.contentView viewWithTag: TEST_2ND_TEXTVIEW_TAG]; test_3rd_textView = (UITextView*)[cell.contentView viewWithTag: TEST_3RD_TEXTVIEW_TAG]; */ //[test_textView setText: [NSString stringWithFormat: @"pipe-%d", indexPath.row ]]; [test_2nd_textView setText: [NSString stringWithFormat: @"PWR RX %d", indexPath.row ]]; [test_3rd_textView setText: [NSString stringWithFormat: @"device %d", indexPath.row ]]; // Add created UI objects to cell[ indexPath.row ]: [cell.contentView addSubview:test_textView ]; [cell.contentView addSubview:test_2nd_textView ]; [cell.contentView addSubview:test_3rd_textView ]; return cell; } 

necesita definir su CellIdentifier como Bellow: –

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *CellIdentifier = [NSString stringWithFormat:@"%d_%d",indexPath.section,indexPath.row]; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.textLabel.text = @"Test"; cell.textLabel.textColor=[UIColor whiteColor]; return cell; } 

NSString *CellIdentifier = [NSString stringWithFormat:@"%d_%d",indexPath.section,indexPath.row];

esto te puede ayudar

Tuve el mismo problema, pero para mí fueron las properties de los elementos dentro de UITableviewCell. Sugiero que use una celda personalizada y cree los campos de text con la NIB o StoryBoard. Luego crea salidas para ellos en la class de celda personalizada con la siguiente firma:

 @property (strong, nonatomic) IBOutlet UITextField *myText; 

La parte importante es usar la propiedad fuerte y no la débil.

Aquí hay un enlace a mi publicación.

¡Buena suerte y espero que esta ayuda!

Debes agregar una matriz de dictionary y agregar los datos de tus files de text con indexpath.row basado después de scroll tableview.

mira mi ejemplo

  NSMutableDictionary *dicttable=[NSMutableDictionary dictionaryWithDictionary:[arrofselect objectAtIndex:indexPath.row]]; [dicttable setValue:[NSString stringWithFormat:@"%@",self.other_text.text] forKey:@"AnswerId"]; [dicttable setValue:[[arrQuestions objectAtIndex:indexPath.row] valueForKey:@"QuestionID"] forKey:@"QuestionID"]; [arrofselect replaceObjectAtIndex:indexPath.row withObject:dicttable]; 

Tiene que replace los valores de label indexapth.row basados ​​en dictionary cuando se edita text en

  • (vacío) textFieldDidBeginEditar: (UITextField *) textField
  • (vacío) textFieldDidEnd Edición: (UITextField *) textField

disfruta … saludos