objective-c ios xcode4.2

objective c - Cómo crear visualmente y utilizar celdas estáticas en un UITableView incrustado en un UIViewController



objective-c ios (6)

La respuesta de pmd funciona, pero en el caso de que también sea necesaria la compatibilidad con iOS 5, puede realizar la incrustación mediante programación utilizando la API de contención de vistas.

En el método viewDidLoad de su UIViewController principal:

- (void)viewDidLoad { [super viewDidLoad]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; MyTableViewController* vc =[storyboard instantiateViewControllerWithIdentifier:@"MyTableVC"]; [self addChildViewController:vc]; [self.view addSubview:vc.view]; // ensure embedded view is aligned to top CGRect frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); vc.view.frame = frame; [vc didMoveToParentViewController:self]; }

No olvide especificar una ID de guión gráfico para su UITableViewController con las celdas estáticas.

Estoy usando XCode 4.2 y he construido mi interfaz de usuario usando guiones gráficos. Necesito crear una vista que tenga contenido por encima y por debajo de un UITableView y puedo lograrlo utilizando un UIViewController. Un UITableViewController no le permite agregar contenido encima o debajo de la tabla. Puede usar el encabezado / pie de la tabla pero eso no funciona para lo que me gustaría lograr.

Ahora tengo un UIViewController con un UITableView incrustado en él. Puedo ajustar la altura y el ancho del UITableView en consecuencia, lo que me proporciona el diseño de IU que estoy buscando.

Puedo personalizar las celdas estáticas en el UITableView pero cuando intento compilar obtengo el siguiente error:

Configuración ilegal: las vistas de tabla estáticas solo son válidas cuando están incrustadas en instancias de UITableViewController

Mi pregunta es, ¿cómo se están moviendo los demás? Crear una vista de tabla con celdas estáticas y distribuirlas visualmente es muy bueno, pero aparentemente no está permitido por alguna razón que no puedo entender. No puedo cambiar a un UITableViewController debido a mis requisitos de diseño visual.

Cualquier ayuda sería apreciada grandemente


No estoy seguro de lo que quiere decir con celdas estáticas, pero si está tratando de construir las celdas en IB y luego quiere usarlas en su tableView, lo que podría hacer es en su cellForRowAtIndex puede llamar a loadNibNamed pasando el nombre de Archivo .nib que creó para las celdas como parámetro. Asegúrese de tener una outlet en su viewController que se asigne a .nib de la celda. Intenta explorar en estas direcciones si eso es lo que estás tratando de lograr


Puede lograr esto en Xcode 4.5 y versiones posteriores, asumiendo que su aplicación está dirigida a iOS 6+.

En el Guión gráfico, simplemente cree un UIViewController con un Contenedor de Vista dentro de su vista principal. Luego, conecte ese Contenedor de Vistas a un UITableViewController que contiene celdas estáticas.

Al igual que esto:

No necesitas una sola línea de código. Simplemente controle clic, arrastre y seleccione incrustar. La contención del controlador de vista se maneja por usted.


Puedes hacerlo dinámico y luego cambiar de desplazamiento:

[yourTableName setScrollEnabled:NO];


Sé que esta es una pregunta antigua, pero tengo una solución escasa para este problema.

Necesitaba 3 celdas estáticas en un UIViewController, así que esto es lo que hice:

  1. Arrastre algunas celdas de vista de tabla a su interfaz (no a UITableView): agregue texto y cualquier otra cosa que necesite.
  2. Realiza las propiedades de IBOutlet para tus células y las sintetiza.
  3. Arrastra un botón y haz que cubra toda la celda. Configure el botón para escribir ''Personalizado'' para que aparezca invisible; repita para todas las celdas
  4. Agrega etiquetas numéricas a tus botones
  5. Implementar las siguientes funciones. buttonDown está conectado al evento ''Touch Down'' de los botones. buttonUp está conectado a ''Retocar el interior'' Y ''Retocar el exterior''

    -(IBAction)buttonDown:(id)sender { if ([sender tag] == 1) { myFirstCell.selected = YES; } else if ([sender tag] == 2) { mySecondCell.selected = YES; } else if ([sender tag] == 3) { myThirdCell.selected = YES; } } -(IBAction)buttonUp:(id)sender { myFirstCell.selected = NO; mySecondCell.selected = NO; myThirdCell.selected = NO; }

Puedes hacer lo que quieras en el evento ButtonDown y usar el botón para ir directamente a una nueva vista. Encuentro esto bastante útil.


Tienes razón. En el guión gráfico, no puede tener un tableView con celdas estáticas incrustadas en un viewController. Una forma de evitarlo (aunque no lo he probado yo mismo, sin embargo, no estoy seguro de si funciona) puede ser que crees una instancia de UITableViewController en el guión gráfico con celdas estáticas. Agregue una instancia de UIView a su viewController y, a continuación, cargue mediante programación la vista de tabla del UITableViewController en la UIView de su viewController.