2009-10-02 15 views
7

Tengo una vista que se muestra debajo de un controlador de navegación. La vista contiene una subvista en la parte superior y una vista de tabla en la parte inferior. La tabla puede tener filas que se extienden más allá de la altura visible en función de los datos. Cuando tengo filas que están debajo de la última fila visible, si desplazo la vista hacia arriba, rebota, no permanece allí. ¿Hay alguna manera de hacer que se quede? Intenté hacer que el padre vea una vista de desplazamiento y eso no ayudó. Mi vista es de un XIB.El desplazamiento de la vista de tabla rebota y oculta las celdas inferiores

Respuesta

26

Parece que el tamaño de su UITableView es ligeramente mayor que el área disponible en la pantalla del iPhone. Esto podría deberse a que la vista no tuvo en cuenta el tamaño de la barra de navegación hte. Como prueba, vaya a Interface Builder y haga que la UITableView sea mucho más pequeña, digamos la mitad del tamaño, para que pueda ver claramente la parte superior e inferior. Vea si todavía tiene el mismo rebote.

Si los tamaños son correctos, UITableView no necesita un UIScrollView para funcionar como se espera. De hecho, habría pocas razones, en las que se me ocurra ahora (aparte de las de desplazamiento horizontal), que desearía una UITableView dentro de UIScrollView.

+0

Gracias por su observación, eso solucionó el problema. – Umark

+11

Genial. Veo en su historial que no está seleccionando ninguna de las respuestas aceptadas como las respuestas oficiales a sus preguntas. Tal vez no sabías esto, pero a la izquierda de las respuestas ves una marca de verificación. Si hace clic en eso, entonces está seleccionando la respuesta que fue la solución a su problema. Eso me da cierta reputación, y para las personas que tienen la misma pregunta, ven qué respuesta te ayudó. Cuando tenga oportunidad, haga clic en la marca de verificación. Gracias. – mahboudz

+0

Impresionante, intenté un montón de cosas antes de que esto solucionara mi problema. –

0

En su Controlador de vista de nivel superior, en la configuración "Métricas simuladas", configure la Barra superior y/o la Barra inferior (según lo que se muestra en su Controlador de vista) en "opaco". A continuación, cambie el tamaño de la vista de tabla para que se ajuste entre la barra de navegación y la barra de herramientas/barra de pestañas. Por último, añadir dos restricciones:

  1. Top espacio al inicio Guía de diseño
  2. espacio inferior a la Guía de diseño de fondo

funcionado muy bien para mí, independientemente de su orientación.

0

Si no está utilizando Storyboard, puede probar con el (rápida) siguiente código:

tableView.contentInset = UIEdgeInsetsMake((self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0) 

self.view.addSubview(tableView) 

Si usted tiene una barra de herramientas o (si está utilizando un tabBarController), que necesitará para ajustar el abajo también:

tableView.contentInset = UIEdgeInsetsMake((self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0) 

self.view.addSubview(tableView) 

Tenga en cuenta que este es un código simple y 'áspero'. Puede hacerlo más bonito si es necesario :)

Cuestiones relacionadas