2011-12-26 11 views
63

He creado un nuevo proyecto de Xcode usando Storyboards (plantilla de vista de pestaña). Agregué un par de controladores de vista a mi guión gráfico, y quería usar un UITableView con celdas estáticas para uno. Lo creé, pero cuando corro en el simulador las celdas no aparecen. No he cambiado nada en el proyecto a excepción de este archivo del guión gráfico. Estoy mostrando capturas de pantalla del editor del guión gráfico y del simulador en ejecución. La etiqueta aparece, por lo que la vista se carga correctamente. Establecí el color de fondo en gris para que pueda ver que se está cargando la vista talbe. Todas las celdas están configuradas como visibles. Cambié su estilo a Basic y edité la etiqueta, y agregué un indicador de divulgación, eso es todo.UITableView con celdas estáticas no aparece

simulator xcode

Respuesta

34

¿Quieres probar el uso de la TableViewController en lugar del controlador de vista genérico?

+0

aunque no entiendo cómo hacer funcionar la vista de tabla si solo se trata de una subvista de una vista más grande, como en mi captura de pantalla. si arrastro un Table View Controller y lo dejo ser toda la pantalla, eso funciona. pero si quiero mezclar y combinar otros elementos de UI, no tengo idea. No puedo entender cómo conectarlo a un controlador de vista de tabla. – adum

+2

Solo puede mezclar y combinar solo si inserta el controlador de vista de tabla dentro de una vista de contenedor que es un elemento secundario de su vista más grande. – Andrew

+0

Tuve el mismo problema y fue porque el genérico UIViewController está predeterminado para ser el padre de la vista de tabla al arrastrar un UINavigationController desde el menú. ¿Por qué no cargar en un UITableViewController por defecto Apple? > _ < – PostCodeism

101

Como se indica en el sitio web de Ray Wenderlich (en este post: Beginning Storyboards in iOS 5 Part 2, sección "El jugador de la pantalla Agregar en el trabajo"):

Una cosa más acerca de las células estáticas, que sólo funciona en UITableViewController. El Editor de guiones gráficos le permitirá agregarlos al un objeto Vista de tabla dentro de un UIViewController regular, pero esto no funcionará durante el tiempo de ejecución . La razón de esto es que UITableViewController proporciona algo de magia extra para cuidar la fuente de datos de las celdas estáticas . Xcode incluso le impide compilar tal proyecto con el mensaje de error: "Configuración ilegal: las vistas de tabla estáticas son solo válidas cuando están incorporadas en instancias de UITableViewController".

tenía el mismo problema, pero esto hace las cosas claras ...

+1

Entonces, ¿hay alguna forma de utilizar celdas estáticas en una UITableView que se encuentre dentro de un UIViewController usando guiones gráficos sin incrustar el UITableView en un UITableViewController en el guión gráfico? – Das

+0

por lo que leí en la parte de Ray es que esto se está evitando debido a un cheque y la alerta de configuración ilegal. Entonces, aunque no estoy seguro de apostar mi dinero en: No. – EeKay

+0

@KarenAnne ... no use celdas estáticas. Simplemente use una UITableView dinámica y haga que el contenedor UIViewController sea un delegado y luego use la matriz estática que tenga para llenar el UITableView. – Das

192

no implementan cualquiera de los métodos siguientes cuando se utiliza la vista de tabla estática:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
} 
+29

Esto significa que debe eliminar las implementaciones, no solo insertar los métodos vacíos :) – asdf

+0

Sí, pero me pregunto cómo deshacerse de la advertencia de Xcode que ahora dice que la implementación está incompleta. – wcochran

+0

@wcochran Verificaría si está declarando esos métodos en su interfaz o si su clase no es una subclase de UITableViewController. Ambos podrían dar lugar a advertencias de "Implementación incompleta" en este caso. –

11

Puede añadir una Vista de contenedor e insertar un UITableViewController en ese contenedor. Luego puede administrar sus celdas estáticas dentro del nuevo controlador.

+1

¡Guau! ¡Es por eso! Me rompí el cerebro, para descubrir, ¿por qué el antiguo desarrollador ubicó UITableViewController en Container? – skywinder

1

que estaba experimentando el mismo problema, y ​​la solución que funcionó para mí fue presentar la subclase UITableViewController estática por medio de performSegue. La presentación de la vieja manera con [[self navigationController] present...] no resultó en la vista de tabla estática cargando correctamente sus células.

Cuestiones relacionadas