2011-03-30 37 views
12

Inicializo los datos en mi tabla con una matriz en viewDidLoad y luego agrego los datos a la celda. Esta es una forma estándar de hacerlo que leo en un libro. Esto es lo que tengo:cómo actualizar los datos en tableView?

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    //Create array and add data ("tableViewValues" is initialized in .h file) 
    tableViewValues = [[NSMutableArray alloc]init]; 
    [tableViewValues addObject:@"$280,000.00"]; 
    [tableViewValues addObject:@"$279,318.79"]; 
} 

// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    NSString *cellValue = [tableViewValues objectAtIndex:indexPath.row]; 

    cell.textLabel.text = cellValue; 

    return cell; 
} 

Así que cuando se carga la vista, los dos valores de las monedas están en mi mesa. Ahora en otra función, llenó otra matriz con diferentes números de moneda dependiendo de lo que el usuario ingrese en un campo de texto. ¿Cómo actualizaría mi vista de tabla actual y reemplazaría esos valores con los valores en mi otra matriz? ¿Alguien puede ayudarme? ¡Gracias!

Respuesta

37

Puede llamar

[self.tableView reloadData]; 

para recargar todos los datos, sin embargo, tendrá que programar una manera de tener la matriz que desea rellenar la tabla. Tal vez desee que su -cellForRowAtIndexPath llame a un método privado que elige condicionalmente la matriz correcta.

+0

tengo la recarga de datos para trabajar, gracias.Pero estoy teniendo problemas para llenar cada celda con valores en mi matriz? ¿Podrías elaborar sobre cómo hacer eso? – serge2487

+0

Depende. ¿Necesita recuperar los valores iniciales después de obtener los nuevos valores? ¿En qué está su tabla actualizando valores? Difícil de decir sin más información. – Jamie

+0

tengo un delegado de campo de texto "shouldChangeCharactersInRange" y llene una matriz con números en ese método. Entonces la matriz está cambiando constantemente. No me importan los viejos valores. Solo quiero tomar mis valores de matriz y colocarlos en la tabla cada vez que se llama al método. – serge2487

1

Usted necesitaría (liberación y) recrear misma tableViewValues matriz y luego llamar reloadData método de tableView así:

[self.tableView reloadData]; 

Esto funcionará si estás en controladora vista de tabla y apunta a la self.tableView tabla en cuestión.

2

Tienes que eliminar todos los valores de la matriz a continuación, usted tiene que llamar datos de la tabla de recarga

// In the method where you will get new values 
[tableViewValues removeAllObjects]; 
[tableViewValues add:@"new values"]; 
//reload table view with new values 
[self.tableView reloadData]; 
+0

La misma pregunta. esto agrega algo nuevo porque es básicamente la misma respuesta que la que ya está aceptada. –

1

en esa función, después de asignar valores a la nueva matriz, todo lo que tiene que hacer es

[tableViewValues removeAllObjects]; 
tableViewValues = [[NSMutableArray alloc] arrayByAddingObjectsFromArray:newArray]; 
[self.tableView reloadData]; 
+0

¡Gracias, esto es lo que estaba buscando! – Jordan

2

He tenido este problema muchas veces y siempre cometo el mismo error.

[self._tableview reloadData] funciona!

La pregunta es el lugar donde se completa la tabla.

lo hice en - (void) viewDidLoad y la mesa estaba actualizan con los mismos datos . Aparentemente no pasa nada

Actualice el contenido de la vista de tabla (plist, dictionary, array, lo que sea) en el mismo lugar donde llama [self._tableview reloadData], justo antes.

ESE ES LA CLAVE !!!

hacer una prueba:

#pragma mark - Actions 

- (IBAction)refreshParams:(id)sender { 

    self.dictionary = nil; 

    [self._tableView reloadData]; 
} 

Se puede ver cómo desaparece el contenido tableview cuando se presiona el botón de actualización. Obviamente, este es un ejemplo. Uso un diccionario para completar la tabla y un botón para actualizar el contenido.

0
[self.tableView reloadData]; 

te ayudarán.

Cuestiones relacionadas