2009-10-09 16 views
39

Tengo un TabBarController, una de las pestañas contiene una subvista que es un navigationController. Luego estoy cargando en el controlador de navegación una vista que hereda el formulario UITableViewController.Margen superior en UITableViewController

Mi problema es que por alguna razón la vista de tabla comienza a aparecer detrás del controlador de navegación, no en la parte superior de la pantalla sino a la mitad de la barra de navegación, por lo que se corta la parte superior de la primera celda de la vista de tabla.

¿Alguien puede sugerir cómo mover el UITableViewController hacia abajo?

Respuesta

-1

Puede establecer el marco de UITableView en una posición explícita X, Y estableciendo la propiedad de marco en la vista. O puede cambiar la misma propiedad usando el constructor de interfaz dependiendo de si ha agregado la tabla vista vía IB o en código.

por ejemplo.

myTable.frame = CGRectMake(0.0, myTable.frame.origin.y + NAV_BAR_HEIGHT, myTable.frame.size.width, myTable.frame.size.height); 

Esto posicionará la tabla myTable (que es un puntero a la UITableView) por debajo de la barra de navegación, también puede ser necesario ajustar la altura de la mesa en consecuencia. La altura de la barra de navegación que estoy indicando con una constante es 44.0.

Normalmente hago este tipo de ajuste de vista si ha sido necesario en la vista Aparecerá el controlador de vista responsable. No es común que deba realizar este tipo de ajuste, por lo que puede solucionarlo cambiando la forma en que se configuran sus vistas.

Sin más detalles sobre cómo se configura su vista, es difícil ser más específico.

98

Fijar mediante programación:

- (void)viewDidLoad { 
     UIEdgeInsets inset = UIEdgeInsetsMake(20, 0, 0, 0); 
     self.tableView.contentInset = inset; 
    } 
+2

Esto funciona genial, pero las barras de desplazamiento están un poco desordenadas. Se extienden debajo de la barra de navegación aquí. Es como si tuviéramos que cambiar el marco en lugar de simplemente agregar un edgeInset a la vista de desplazamiento. Pero ese reencuadre no funciona –

+4

@ chuckp16 También puede agregar 'self.tableView.scrollIndicatorInsets = insert;' – dokkaebi

+4

(64, 0, 0, 0) funciona mejor para UINavigationBars estándar (sin solicitud). – eulr

7

Este "escondido detrás de la barra de navegación" problema se debe a iOS 7 usando el diseño de pantalla completa de forma automática. See the iOS 7 Transition Guide.

Es un poco tortuoso ya que se muestra como en iOS 6 en el simulador (es decir, no está metido en la parte posterior).

¿Su barra de navegación es translúcida? La mía era, y establecerlo en no translúcido lo arregla en Iphone iOS 6, iPhone iOS 7 y Simulator 7.0 construyendo con XCode 5. (En mi caso lo configuré como translúcido para la apariencia visual.)

+0

¡Hah! Acabo de comprobar las fechas ... esto no se trataba de la distribución de iOS 7, ¿o sí? :) Gah. Bueno, supongo que podría dejarlo en caso de que este sea el primer golpe que la gente busque el problema hoy en día, como yo. –

+0

Gracias por dejar esto. Me ayudó. – jeffreymatthias

+0

Aunque este no fue el caso para la pregunta original, ¡esta es una respuesta muy útil! – erdekhayser

Cuestiones relacionadas