Agregar tabla vista como subvista no volverá a cargar datos

He creado UITableViewController en el guión gráfico, y lo instanciado a través de

self.centerCMController = [self.storyboard instantiateViewControllerWithIdentifier:@"ContextMenu"];
self.centerCMController.delegate = self;
[self.view addSubview:self.centerCMController.view];

Cuando más tarde en el código que llamo

[self.centerCMController.tableView reloadData];

no pasa nada. ¡TableView no volverá a cargar datos! Investigué un poco y encontré si establezco numberOfTtems = 3 antes de la línea:

[self.view addSubview:self.centerCMController.view];

la vista de tabla muestra solo 3 elementos. No importa si posteriormente cambio numberOfTtems = 4, solo se mostrarán los primeros 3 elementos (aunque correctamente) ... pero el número de celdas se fijará hasta el final de los tiempos.

que me estoy perdiendo aqui?

EDITAR:

para ser más descriptivo, configuro adecuadamente a los delegados ambos:

(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView and

-

(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

se llaman, primero devuelve 1 y el otro numberOfItems, que es 0 en el inicio y 2 en la recarga ... pero -

 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

nunca se llama

0
para ser más descriptivo, establezco los delegados correctamente tanto - (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView y - (NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) sección son llamados, primero devuelve 1 y el otro numberOfItems , que es 0 en el inicio y 2 en la recarga ... pero - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath nunca se llama
agregado el autor MegaManX, fuente
Lo que importa es lo que haces en los métodos delegados de tu vista de tabla, no en el guión gráfico. Muestre algo de eso, p. donde usa este numberOfItems .
agregado el autor meaning-matters, fuente

2 Respuestas

La causa más común de no volver a cargar datos es que la vista de tabla no tiene un conjunto de datos. Compruebe la vista de tabla en el guión gráfico para ver que se trata de puntos de fuente de datos a algo (a menudo, el controlador de vista que lo contiene).

El segundo más común sería que la salida a la vista de tabla que dice que debe volver a cargar no está configurada. Por favor verifique con NSLog y luego configure (probablemente de nuevo en el guión gráfico).

Finalmente, solo para observar, el diseño es inusual. Es más común/simple tener un controlador de vista que contenga la vista de tabla, no instanciar otro y luego mover su vista.

0
agregado
Esto es como el menú desplegable, que me gustaría tener en todos mis controladores de vista ... Y además, esto es fácilmente recreable. Crear nuevo proyecto. Agrega dos botones en la parte inferior. Uno activa la acción para agregar una vista de tabla y otra para volver a cargar datos. En realidad, agregaré esto a la apertura.
agregado el autor MegaManX, fuente

Creo que tu problema es que necesitas estas llamadas:

[[[self centerCMController] tableView] setDelegate:self];
[[[self centerCMController] tableView] setDatasource:self];

Cuando está haciendo instantiateViewControllerWithIdentifier: , está creando un UIViewController , no un UITableView . Por lo tanto, configurar un delegado no debería hacer nada, ni tiene una fuente de datos.

0
agregado