Cómo utilizar TableViewCell personalizado en la programación de iOS
La clase UITableViewCell puede mostrar una variedad de estilos, pero a veces necesitamos adaptarnos a diferentes modos de visualización. En el artículo de hoy, usaremos la vista de tabla para mostrar una serie de celdas personalizadas.
Inicie Xcode, seleccione "Crear un nuevo proyecto Xcode", luego seleccione la plantilla de aplicación vacía y haga clic en Siguiente. Nómbrelo CustomCells y configúrelo como se muestra a continuación.
Haga clic en Siguiente, seleccione la ruta de almacenamiento del proyecto y finalmente haga clic en Crear.
Aquí es necesario agregar dos archivos, UITableViewController y el archivo xib correspondiente a la celda personalizada.
Elija Archivo | Nuevo > Archivo y luego agregue un UITableViewController llamado TableViewController.
Como se muestra en la figura:
Para este controlador, no necesitamos el archivo xib, así que haga clic en Siguiente para crearlo directamente.
Cree el archivo nuevamente. Esta vez creamos un archivo xib vacío, como se muestra a continuación:
Haga clic en Siguiente, asegúrese de que Familia de dispositivos esté configurado en iPad y luego haga clic en Siguiente. la ruta predeterminada Guárdelo como un archivo CellNib.
A continuación, abra el archivo CellNib.xib. Arrastre y suelte varias etiquetas arriba:
El tamaño de fuente de la primera etiqueta aquí es 27 y la fuente es System Italic. Todas las demás etiquetas están configuradas de forma predeterminada.
El siguiente paso es configurar la etiqueta para la Etiqueta cuyo texto sigue siendo "Etiqueta".
Establezca tag=1 para la primera etiqueta de fuente grande y luego configure las etiquetas de las etiquetas en el lado derecho de Dirección1, Dirección2, Teléfono y Celular en 2, 3, 4 y 5 respectivamente.
Luego necesitas modificar la clase de propietario del archivo de xib. La elección aquí es TableViewController.
Abra TableViewController.h y agregue estas propiedades:
#import
@property (no atómico, fuerte) NSArray *cellContent;
@property (no atómico, fuerte) IBOutlet UITableViewCell *customCell;@end span>
En esta demostración, definimos una matriz para registrar el contenido de todas las celdas, y también necesitamos configurar la salida customCell como se muestra a continuación.
Ahora abra TableViewController.m y realice los siguientes cambios:
#import "TableViewController.h"@interface TableViewController ()< span class="referer">@end
@implementation TableViewController
@synthesize cellContent, customCell;
- (NSArray *)cellContent< / p>
{
cellContent = [[NSArray alloc] initWithObjects:
[NSArray arrayWithObjects:@"Alex Ander",
@"213 4th St.", @"Apt. 17", @"555-555-5555", @"111-111-1111", nil],
[NSArray arrayWithObjects:@"Jane Doe",
@"4 Cualquier Ave.", @"Suite 2", @"123-456-7890", @"098-765-4321", nil],
[ NSArray arrayWithObjects:@"Bill Smith",
@"63 Smith Dr.", @"", @"678-765-1236", @"987-234-4987", nil],< / p>
[NSArray arrayWithObjects:@"Mike Taylor",
@"3145 Happy Ct.", @"", @"654-321-9871", @"654-385- 1594 ", nulo],
[NSArray arrayWithObjects:@"Nancy Young",
@"98 W. 98th St.", @"Apt. 3", @"951 - 753-9871", @"951-654-3557", nil],
nil];
devolver contenido de celda;
}
- (id)initWithStyle:(UITableViewStyle)estilo
{
self = [super initWithStyle:style];
if (self) {< / p>
// Inicialización personalizada
}
return self;
}
- (void)viewDidLoad p>
{
<p> [super viewDidLoad];
// Descomentar la siguiente línea para preservar la selección entre presentaciones.
// self.clearsSelectionOnViewWillAppear = NO;
// Descomente la siguiente línea para mostrar un botón Editar en la barra de navegación de este controlador de vista.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Libera cualquier subvista retenida de la vista principal.
// por ejemplo, self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
devolver YES;
}
#pragma mark – Fuente de datos de vista de tabla
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Devuelve el número de secciones.
return 1;
}
- (NSInteger)tableView:( UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Devuelve el número de filas de la sección.
return [[self.cellContent objectAtIndex :0] recuento];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 149.0f;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath p>
{
cell.backgroundColor = [UIColor colorWithRed:1 verde:1 azul:.75 alfa:1];
}
- (UITableV
iewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CellNib" propietario:self opciones:nil] ;
cell = self.customCell;
self.customCell = nil;
}
// Configurar la celda… p>
UILabel *textTarget;
textTarget = (UILabel *)[cell viewWithTag:1]; //nombre
textTarget.text = [[self.cellContent objectAtIndex: indexPath.row] objectAtIndex:0];
textTarget = (UILabel *)[cell viewWithTag:2]; //addr1
textTarget.text = [[self.cellContent objectAtIndex: indexPath.row] objectAtIndex:1];
textTarget = (UILabel *)[cell viewWithTag:3]; //addr2
textTarget.text = [[self.cellContent objectAtIndex: indexPath.row] objectAtIndex:2];
textTarget = (UILabel *)[cell viewWithTag:4] //teléfono
textTarget.text = [[self.cellContent objectAtIndex: indexPath.row] objectAtIndex:3];
textTarget = (UILabel *)[cell viewWithTag:5]; //cellPhone
textTarget.text = [[self.cellContent objectAtIndex: indexPath.row] objectAtIndex:4];
devolver celda;
}
#pragma mark – Delegado de vista de tabla
- ( void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// N
la lógica de navegación puede ir aquí. Crear y enviar otro controlador de vista.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@" <#Nib name#>" paquete:nil];
// …
// Pasa el objeto seleccionado al nuevo controlador de vista.
[self .navigationController pushViewController:detailViewController animado:SÍ];
*/
}@end#import
#import "TableViewController.h"@interface AppDelegate: UIResponder
@property (fuerte, no atómico) TableViewController *tableViewController;
@property (fuerte, no atómico) UINavigationController *navController;@end
- (BOOL)aplicación:(UIApplication *)aplicación didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [ [UIWindow alloc] initWithFrame:[[UIScreen mainScreen] limites]];
// Anula el punto para la personalización después del inicio de la aplicación.
self.tableViewController = [[TableViewController alloc] initWithStyle: UITableViewStylePlain];
self.tableViewController.title = @"Vista de tabla";
self.navController = [[UINavigationController alloc]
initWit
hRootViewController:self.tableViewController];
[self.window addSubview:self.navController.view];
[self.window makeKeyAndVisible];
devuelve SÍ ;
Bien, ahora ejecute el programa y preste especial atención al hecho de que la celda predeterminada de tableViewController ha sido reemplazada por nuestra celda personalizada.