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.