2012-01-10 16 views
7

Cuando el código con la aplicación de navegación iOS, he enfrentan con problemas para esto:viewWillAppear vs viewDidLoad ios

donde puedo poner el "initdata" método para UITableView? en viewWillAppear o viewDidLoad?

por favor ayúdenme.

+0

Depende de lo que quiere decir con datos de inicio. – Sulthan

+0

¿Cuál es su requisito? –

Respuesta

14

Usted puede poner initData como por su exigencia de la aplicación,

si la tabla tiene que cargar los datos cada vez con nuevos datos, entonces debería estar bajo

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    //initData 
} 

De lo contrario, si las necesidades de mesa que se vuelva a cargar por una sola de datos que no varía o no hay ninguna operación de edición realizada en los datos, se debe utilizar

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    //initData 
} 
+0

si pongo el código en ambos lugares. Se ejecutará ese código 2 veces cuando inserte esta tableView en un UInavigationcontroller – Clover03ti05

+0

Debe colocarlo en "viewwillAppear" solamente, como su matriz según el valor de cambio de la vista secundaria. Funcionará. –

+0

Nunca inicie datos en viewWillAppear. Dependiendo de la forma en que cargue el controlador de visualización en la pantalla (en otro VC o en todos los segmentos), no podrá invocarse en absoluto. –

2

es mejor llamar a que, en initWithNibName:bundle: o initWithCoder: método y liberar los datos cargados en -(void)dealloc.

Además, puede tenerlo en viewDidLoad y liberar los datos cargados en viewDidUnload. Pero es mejor no llamar a que a partir de viewWillAppear:

Editar:

espero que array está en función de la selección en la vista padre. En ese caso, escriba un método setter, que establece la condición e inicie los datos antes de presionar el controlador de vista.

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
// Pass the selected object to the new view controller and depend on that, load the data. 
[detailViewController initData:(id)[_list objectAtIndex:indexPath.row]]; 
[self.navigationController pushViewController:detailViewController animated:YES]; 
[detailViewController release]; 
+0

en mi caso, tengo un NSArray necesito prepararme para uitableview. y el valor de esta matriz según el valor de cambio de la Vista hija. – Clover03ti05

+0

He editado mi respuesta – Ilanchezhian

Cuestiones relacionadas