uitableviewcontroller example cellforrowat iphone ios cocoa-touch uitableview

iphone - example - uitableview swift4



¿Cómo selecciono un UITableViewCell por defecto? (7)

He creado un UITableView y me gustaría que un UITableViewCell específico apareciera seleccionado (azul) cuando se carga la vista.


A veces, cuando no estás en un UIViewController , no tienes viewWillAppear y, a veces, UITableView tu UITableView programáticamente.

La solución fácil es implementar este método de delegate :

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if (self.selectedIndex == indexPath.row) { cell.selected = YES; } }

No funciona en cellForRowAtIndexPath porque la celda aún no se muestra. y el método setSelected se llama justo cuando se muestra este.


Deberías ponerlo en la viewWillAppear . viewWillAppear .

[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0];

Si intenta seleccionarlo en cellForRowAtIndexPath: entonces no tomará el estilo requerido.


Definitivamente ten cuidado. Estoy seguro de que tiene una buena razón, pero observe detenidamente el documento de Pautas de interfaz humana que Apple proporciona. Las aplicaciones se rechazan por no deseleccionar filas de la tabla. Le animo a que encuentre la sección apropiada de HIG y vea que Apple ofrece sugerencias.


Sea juicioso al usar este método, ya que seleccionar la fila de esta manera es algo que Apple sugiere en contra de hacer para mostrar un estado "elegido".

En su lugar, considere la posibilidad de establecer la propiedad accessoryType la celda en algo como UITableViewCellAccessoryCheckmark .


Usa el método de UITableViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated

Información here .


Use este código para seleccionar la celda de forma predeterminada en la vista de tabla, indexPath puede variar según sus necesidades

-(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0]; [theTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom]; }


-(void)viewWillAppear:(BOOL)animated { // assuming you had the table view wired to IBOutlet myTableView // and that you wanted to select the first item in the first section [myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop]; }

Estoy usando esta técnica para seleccionar una de las dos UITableViewCells para que los usuarios sepan qué celda UIDatePicker un UIDatePicker debajo de la vista de tabla en la que se verá UIDatePicker . Apple utiliza esta técnica en la aplicación de calendario cuando crea un nuevo evento y establece las fechas.