Vista de tabla estática fuera de UITableViewController

159

Después de la nueva actualización de Xcode, mi aplicación no se valida y muestra este error:

las vistas de tabla estáticas solo son válidas cuando se incrustan en instancias UITableViewController

¿Alguna posibilidad de resolver fácilmente?

Francesco S
fuente
Depende de por qué está utilizando una subclase UIViewController en lugar de un UITableViewController.
David Berry
3
Porque necesito otros elementos dentro de la vista que no pertenecen a un UITableViewController
Francesco S
1
Experimentando el mismo problema aquí. Acabo de actualizar (o degradar, como parece, hasta ahora) a Xcode 5.1 y tengo el mismo problema. Tengo un montón de celdas estáticas en una subclase UITableViewController dentro de mi UISplitViewController.
Stefan Arambasich
Comenzó a suceder también para mí después de la actualización. Tengo algunos controladores de vista construidos con celdas estáticas, no es lo ideal, pero funcionaba bien antes.
jdmunro
No necesita usar UITableViewController. Obtiene este error si tiene celdas de vista de tabla estática en su UiTableView, por lo que creo que una solución fácil es si necesita las celdas, no lo deje estático. Simplemente agregue delegado de vista de tabla y fuente de datos y métodos ficticios UITableViewDelegate
EarlySun

Respuestas:

341

La única forma de obtener un UITableView estático junto con otros controles en la misma pantalla es usar una Vista de contenedor. Siga de esta manera, funciona perfectamente:

  1. Arrastre un ViewController a su guión gráfico.
  2. Arrastre un TableViewController a su guión gráfico.
  3. A continuación, arrastre una vista de Contenedor a su ViewController y ajústela al tamaño que desee (más pequeño que la vista) -> cuando arrastre la vista de contenedor, creará una vista segue y otra. Elimina ese segue y mira.
  4. Luego, finalmente, haga clic en su contenedor y arrástrelo a su nuevo TableViewContoller. Selecciona Insertar.
  5. Diseñe su TableView de la manera que desee -> incluidas las celdas estáticas.

Buena suerte.

Esta respuesta ya se encontró y se dio aquí: G.Huebner -> http://web.archive.org/web/20140928102504/http://iphonedevsdk.com/forum/iphone-sdk-development/111800-static-table- view-cells-only-work-in-a-uitableviewcontroller.html

LukeSideWalker
fuente
¿Dónde tomar salida o acción? En UIViewControllero debería tener que tomar UITableViewController.
Bhavin Ramani
@Bhavin Ramani: Dado que es un UITableViewController en el contenedor, sugiero tomar exactamente esa clase / subclase para guardar sus IBOutlets.
LukeSideWalker
2
Supongo que toda la idea de "celdas estáticas" se implementa de una manera que depende de alguna funcionalidad interna de UITableViewController.
Nicolas Miari
2
Gracias por esto. Puede confirmar que funciona en Xcode 8.3.1.
Atharva Vaidya
¡Simplemente impresionante! Estaba buscando esta solución por un tiempo ahora.
Jason Foglia
8

Un UITableView estático debe estar en un UITableViewController. Por lo tanto, deberá colocar la tabla en UITableViewController y luego agregarla como childView al MainViewController.

Puede consultar https://iphoneidoit.blogspot.in/2013/10/static-uitableview-in-uiviewcontroller.html

Sahana Kini
fuente
1
Hubo muchas formas de evitar esto antes (como retener la celda), pero ahora es un error independientemente. Creo que la pregunta sugiere si hay una manera de suprimir el error.
Matthew Knippen
Sí, lo fue. Desafortunadamente, terminé resolviendo el problema usando una tabla no estática View
Francesco S
1
Yikes La cantidad de reprocesamiento que requeriría convertir a no estática debido a todos los IBOutletmensajes de correo electrónico en mi archivo de controlador de vista es demasiado, y en mi opinión, es inaceptable que una actualización rompa esto sin advertencia o nota de esto en el registro de cambios ( ergo, supongo que todavía es perfectamente válido en papel tener un UITableViewControllercon celdas estáticas dentro de A. UISplitViewContollerMe puse en contacto con el soporte de desarrolladores de Apple y solo recibí una respuesta de correo electrónico genéricamente no tan útil que me vincula a los foros. Supongo que lo intentaré y veré si alguien más está teniendo los mismos problemas después de la actualización.
Stefan Arambasich
4

Creo que lo que está haciendo es arrastrar primero ViewController en el guión gráfico y luego arrastrar tableView en ViewController. De esta manera no puede usar las celdas de la tabla estática. En lugar de esto, lo que debería haber hecho es arrastrar el TableViewController en el guión gráfico principal en lugar de un ViewController y luego seleccionar las celdas estáticas. De esta manera, puede trabajar en celdas estáticas y puede usar cualquier elemento en celdas estáticas.

hellosheikh
fuente
0

Bueno, si realmente está utilizando un TableView estático, debería considerar copiar / pegar todo en un ScrollView o StackView.

River2202
fuente