iphone - example - ¿Se puede agregar TableView de UITableViewController a otra vista?
uitableview custom cell swift 4 (1)
He insertado un UITableViewController y su correspondiente UITableView en un simple documento de IB. El objetivo es incluir el UITableView dentro de una UIWindow padre (o UIView) con otras "cosas" (cualquier cosa realmente) que adornan la tabla. Esto es lo que podría parecer en Interface Builder.
Lo he intentado muchas veces y siempre llego al mismo lugar.
- Construya una subclase de trabajo de UITableViewController llena de datos
- Personaliza UTableView y sus celdas, incluidos los objetivos tap
- Agregue el UITableViewController recién creado en un documento de IB
- Arrastre la UITableView fuera del UITableViewController y en la UIView principal
- Conecte el UITableViewController al UITableView
- Nota: agregar el UITableViewController en el código da como resultado el mismo problema
Cuando ejecuta la aplicación en el emulador de iPhone o en un dispositivo, la tabla se muestra correctamente, pero se bloquea la primera vez que intenta interactuar con ella. Un desplazamiento, un toque, cualquier cosa bloquea la aplicación. Esto parece ser un problema de delegado, como el UITableView no sabe cómo comunicarse de nuevo con UITableViewController, pero no tengo idea de cómo corregir el problema.
Hasta ahora he podido pasar personalizando tableHeaderView para obtener diseños que sean suficientes, pero preferiría que la otra técnica funcione.
¡Estás en el camino correcto! Esto es lo que necesita hacer:
Cree una subclase UIViewController estándar con su vista acompañante xib.
Agregue una UITableView en el XIB.
Conecta todo. El controlador de vista será el delegado y el origen de datos para su tabla, por lo que debe implementar ambos protocolos.
En su archivo de implementación, agregue todos los recursos de datos necesarios y delegue los métodos necesarios para la vista de tabla:
(UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
Su archivo de encabezado puede verse más o menos así:
MyViewController.h
@interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
IBOutlet UITableView *myTableView;
//This outlet is only necessary if you need to send messages to the table view (such as reloadData)
}
@end
¡Deberias hacer eso!