Pregunta

Tengo un UITabBarController como parte de mi aplicación delegado y quiero trampa cuando el usuario toca una ficha específica (los favoritos) y la fuerza de la mesa dentro de ella para volver a cargar los datos.

¿Cuál sería la mejor práctica en este caso?

He añadido el protocolo UITabBarDelegate a mi aplicación delegado y puesto en práctica el método didSelectViewController. Hasta aquí todo bien. Dentro del método consigo un viewController, para que pueda comprobar su título, etc. para determinar la ficha que esté seleccionada.

¿Cómo puedo continuación, enviar un mensaje a la reloadData UITableView en el viewController? He intentado crear un método en mi clase FavouritesViewController y llamar a eso, pero no funciona.

código de ejemplo:

#pragma mark UITabBarController delegate methods

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   // If the favourites tab is pressed then reload the data
   if (viewController.title = @"Favourites")
   {
      if ([viewController respondsToSelector:@selector(reloadFavourites:)]) 
      {
         [viewController reloadFavourites];
      }
   }
} 
¿Fue útil?

Solución

Parece que es necesario agregar un método a [UITableView reloadData] viewWillDisplay del tableViewController. Esto hará que la mesa para volver a cargar cada vez que aparece.

Si desea forzar una recarga será ya se visualiza la tableview, a continuación, llamar a la recarga del método que ha creado en el OP debería funcionar.

Otros consejos

El siguiente fragmento de código debe refrescar la tabla aparece la vista cada vez.

-(void)viewWillAppear:(BOOL)animated
{
    [[self tableView] reloadData];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top