2009-08-31 14 views

Respuesta

3

uso [tableView reloadData] método en vista de tabla ui

+0

Sólo tenga cuidado de hacerlo, mientras que en el modo de edición. – Amagrammer

0

bien .. pero .. tenemos la solución para este .. si añadimos las células en tiempo de ejecución, he recibido la salida con las mismas células en células primera y la última de la UITableView ..

puede borrar la celda antes de añadir cualquier subvistas

Ejemplo:

[mytableview.contentView clearsContextBeforeDrawing]; 
24

Borrar sus datos antes de llamar r eloadData, y ahora el usuario verá que la tabla se borra y se vuelve a llenar con datos nuevos.

myArray = nil; 
[myTableView reloadData]; 
0

Puede ver el valor de la celda reutilizada y, si no es la misma, vuelva a crearla.

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
MyLog(@"Start Table: cellForRowAtIndexPath: %d", indexPath.row); 

NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row]; 
UILabel *lblNew; 
lblNew = [UILabel new]; 
UILabel *lblCell; 
lblCell = [UILabel new]; 

MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

if (cell == nil) 
{ 
    cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; 
    [cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]];  
} 
else 
{ 
    lblNew = [lblNameArray objectAtIndex:indexPath.row]; 
    for (id label in [cell.contentView subviews]) 
    { 
     if ([label isKindOfClass:[UILabel class]]) 
     { 
      lblCell = label; 
     } 
    } 
    if (![lblNew.text isEqualToString:lblCell.text]) 
    { 
     cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; 
     [cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]]; 
    } 
} 
return cell; 
2

Este fue mi trabajo alrededor del cual funcionó. establecer celda = nulo;

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
cell = nil; 
-1

Tenía entradas dobles en la selección después del desplazamiento. ¡Ahora la pantalla está tan limpia como se esperaba! Se utiliza la solución

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
cell = nil; 

y también (por cierto:. ClearsContextBeforeDrawing como standalone no funcionó

[cell.contentView clearsContextBeforeDrawing]; 

en Simulador tengo la impresión de reacción más precisa sobre la selección de células Gracias

!
1

Por cierto, clearsContextBeforeDrawing es una propiedad, y

[cell.contentView clearsContextBeforeDrawing]; 

no hace nada excepto devolver su valor.

0

Swift: No estoy seguro de que es la mejor manera o no, pero estoy usando el código para limpiar y roload datos:

fileprivate func clearTable() { 
    self.tableviewData.removeAll(keepingCapacity: false) 
    self.tableView.reloadData() 
}