IOS UITableView contentOffSet ya no oculta el encabezado al volver desde la vista de detalle comprimido

Estoy usando el código a continuación en el controller de vista raíz para ocultar el encabezado UITableView (el encabezado tiene una barra de UISearch). Funciona cuando la aplicación se inicia y muestra el tableView. Sin embargo, luego, cuando se selecciona una fila, se empuja la vista de detalle y el usuario muestra la vista de detalle, el encabezado de la vista útil ahora está visible en la vista raíz, que no es lo que esperaba.

Estas son las funciones relevantes:

- (void) viewWillAppear:(BOOL)animated { [self.navigationController setNavigationBarHidden:YES animated:animated]; [super viewWillAppear:animated]; self.tableView.contentOffset = CGPointMake(0, self.tableView.tableHeaderView.frame.size.height); //it's as if the line above is ignonetworking on when returning from a pushed detail view } - (void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // theContentOffSet works when I put it hear, but then the user can see it which is not desinetworking } 

La línea '[self.navigationController setNavigationBarHidden: YES animated: animated];' es sin duda parte del problema, ya que sin él, el código funciona y el encabezado de tableView se desplaza fuera de la vista. Sin embargo, el requisito de la vista raíz es que la barra de navigation se oculte, pero que se muestre en la vista de detalle.

Después de search un rato, encontré la siguiente publicación https://devforums.apple.com/message/315519#315519 que resuelve este problema.

 -(void)viewWillAppear:(BOOL)animated { [self performSelector:@selector(updateContentOffset) withObject:nil afterDelay:0.0]; } - (void)updateContentOffset { self.tableView.contentOffset = CGPointMake(0, savedContentOffsetY); } 

Por supuesto, en viewWillDisappear puede save la compensación de contenido de la siguiente manera:

 savedContentOffsetY = self.tableView.contentOffset.y; 

Y en su viewDidLoad , viewDidLoad ,

 savedContentOffsetY = self.tableView.tableHeaderView.frame.size.height; 

He buscado y probado mucho, pero nada ayuda. Finalmente, el siguiente código me ayudó. Puede agregar el código en el método viewDidLoad ():

 self.edgesForExtendedLayout = UIRectEdgeNone; 
    Intereting Posts