Esta pregunta no debe ser mezclado con este aquí.. Estos son dos cosas diferentes.

Hay un buen ejemplo cómo utilizar un UITableView Encabezado ASÍ.

Todo esto funciona bien y la cabecera principal se fija en la parte superior mientras que el estilo es el conjunto de plain.

Pero si yo uso sections, la cabecera principal ya no se pega a la parte superior y se aleja mientras se desplaza a la parte inferior.

En este método, me voy a volver el encabezado de cada sección.

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

En este método estoy ajuste de la altura de la sección de encabezado de arriba:

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

En este método, estoy configurando el real encabezado de la tabla.

- (void)viewWillAppear:(BOOL)animated {
    ...
    self.recordTableView.tableHeaderView = headerView;
}

Es incluso posible tener un fijo de encabezado de la tabla, mientras que el uso de secciones?
¿Qué es una solución alternativa a esto, por favor?

InformationsquelleAutor Houman | 2014-05-31

4 Comentarios

  1. 27

    No hay manera de mantener la cabecera de un tableView fijo, pero
    un enfoque útil cuando usted necesita un encabezado único, es el uso de un UIViewController en lugar de un UITableViewController, y establecer el encabezado (UIView) a cabo de la tableView.

    Algo como esto:

    Es posible fijar un uitableview de Cabecera, mientras que el uso de secciones?

    • No funciona con las células de la estáticas
    • 🙂 nada funciona en cualquier tipo de condiciones. Usted tiene que decidir cual es el camino a tomar para llegar a lo que usted desea. Las células de la estáticas no son un problema, usted puede evitar el uso de si usted necesita, en lugar de una visión estática por encima de su formato tableview, de lo contrario no habría razón para tener un objeto llamado UITableViewController, y una UITableView que puede ser colocado en otro punto de vista.
    • puede incluir tabla estática ver como emdedded vc
    • No trabaja para pull-to-refresh (actualizar de control).
    • Pero esto no es una buena solución, especialmente cuando usted tiene tabbar elementos en la parte inferior, y el formato tableview ha limitado la vista y cuando desea desplazarse hacia abajo en el formato tableview, usted podría desea que la parte superior de la barra de navegación para desplazarse a la parte superior para hacer de la vista y el encabezado se adhieren a la parte superior de la vista. Sacar el encabezado del formato tableview se le hace muy duro para lograr este resultado.
    • Esto está muy bien. Exepto, usted debe hacer la tabla de la vista de pantalla completa y, a continuación, ajuste el contenido de inserción y desplazamiento del indicador de márgenes.
    • Si utiliza UIViewController, entonces usted pierde el teclado automático de manipulación proporcionada por UITableViewController

  2. 63

    Si quieres un UITableViewController (estática células/teclado de manejo) y tiene un encabezado fijo entonces usted debe utilizar la Contención. Usted puede hacer esto a partir de un Guión gráfico mediante el establecimiento de un UIViewController con su encabezado fijo y, a continuación, utilizando un Contenedor de Vista para insertar la UITableViewController.

    Es posible fijar un uitableview de Cabecera, mientras que el uso de secciones?

    Una vez que tienes tu que contiene la vista de configuración, haga clic en arrastrar desde el Contenedor de la Vista a la Vista Controlador que desea incrustar – el UITableViewController en este caso.

    Es posible fijar un uitableview de Cabecera, mientras que el uso de secciones?

    Usted puede acceder y obtener una referencia a los contenidos de Vista Controlador (el UITableViewController) del Contenedor Controlador de Vista mediante la aplicación de la prepareForSegue:sender: método.

    • gracias a la solución salvó mi día !
    • Usted no necesita un contenedor de vista de este. Usted puede simplemente añadir la tabla a la vista controlador directamente, pero por supuesto no a pantalla completa. Crear su visión estática justo encima de la mesa.
    • UITableViewController puede ser más agradable que un UIViewController con un UITableView, como decía al inicio de mi respuesta (estática células/teclado de manejo).
    • Muy justo, basado en el paréntesis.
    • este es sin duda el mejor enfoque, sin embargo, una cuestión es si va a utilizar refreshControl y un searchController añadido a la navigationItem, a continuación, cuando se tire para actualizar, el formato tableview contenido se moverá hacia abajo, pero el encabezado fijo y no estar cubiertos por las bandas de caucho navigationBar. así que si una barra de búsquedas que se necesita mejor añadir el formato tableview.tableHeaderView hasta que esta se ordena.
  3. 4

    Si quieres mantener a la clase como un UITableViewController usted puede añadir su cabecera como una subvista para el formato tableview del superview. Usted tendrá que presionar el formato tableview margen superior hacia abajo para que su headerview no esconde la tabla.

    Aquí es un ejemplo de código para poner en el interior de su tableViewController subclase (en Este ejemplo se supone que su formato tableview controlador está dentro de un controlador de navegación, por lo que empuja a la vista debajo de la barra de navegación):

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        //Do any additional setup after loading the view.
        self.automaticallyAdjustsScrollViewInsets = NO;
    
    }
    
    -(void)addHeaderView{
        CGFloat yPosition = self.navigationController.navigationBar.frame.origin.y + self.navigationController.navigationBar.frame.size.height;
        mainHeaderView = [[UIView alloc] init];
    
        const CGFloat mainHeaderHeight = 44;
        [mainHeaderView setFrame:CGRectMake(0, yPosition, self.view.frame.size.width, mainHeaderHeight)];
    
        mainHeaderView.backgroundColor = [UIColor redColor];
    
        [self.tableView.superview addSubview:mainHeaderView];
        [self.tableView setContentInset:UIEdgeInsetsMake(yPosition + mainHeaderHeight, self.tableView.contentInset.left, self.tableView.contentInset.bottom, self.tableView.contentInset.right)];
     }
  4. 2

    No he hecho esto, pero la primera cosa que me viene a tratar es el lugar de mi en formato tableview en un UIView y hacer mi propio encabezado allí, en esa UIView. Parece un asunto trivial para hacer que a la vista parecen ser el encabezado de la tabla y sin duda la estancia poner.

Dejar respuesta

Please enter your comment!
Please enter your name here