Estoy trabajando en un proyecto en el que tengo que preseleccionar una celda en particular.
Puedo preseleccionar una celda usando -willDisplayCell, pero no puedo deseleccionarla cuando el usuario hace clic en cualquier otra celda.  
- (void)tableView:(UITableView*)tableView 
        willDisplayCell:(UITableViewCell*)cell
        forRowAtIndexPath:(NSIndexPath*)indexPath
{ 
    AppDelegate_iPad *appDelegte = 
      (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
    if ([appDelegte.indexPathDelegate row] == [indexPath row])
    {
        [cell setSelected:YES];    
    } 
}
- (void)tableView:(UITableView *)tableView 
        didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    AppDelegate_iPad *appDelegte = 
      (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
    NSIndexPath *indexpath1 = appDelegte.indexPathDelegate;
    appDelegte.indexPathDelegate = indexPath;
    [materialTable deselectRowAtIndexPath:indexpath1 animated:NO];
}
¿Puede usted ayudar?

Respuestas:
usa este código
Swift 3.0:
fuente
willSelectRowAt:. Vea una respuesta más completa aquí: stackoverflow.com/questions/12693402/…Use el siguiente método en la vista de tabla de delegados
didSelectRowAtIndexpath(O desde cualquier lugar)fuente
indexPathForSelectedRowes un método y no una propiedad.[myTable indexPathForSelectedRow]. Estaba recorriendo las celdas antes. ¡Gracias!Prueba esto:
fuente
Puede ser útil hacer una extensión en Swift para esto.
Swift 4 y Swift 5:
Extensión Swift (por ejemplo, en un archivo UITableViewExtension.swift):
Utilice, por ejemplo:
fuente
viewWillAppear()método ayuda al usuario a comprender de dónde regresa.Verifique con el método delegado si es correcto o no. Por ejemplo;
para
fuente
Swift 4:
fuente
Esta es una solución para Swift 4
solo agrega
funciona a las mil maravillas
ejemplo:
fuente
Además de configurar la celda como seleccionada, también debe informar a tableView que la celda está seleccionada. Agregue una llamada a
-tableView:selectRowAtIndexPath:animated:scrollPosition:suwillDisplayCell:método: y podrá anular su selección normalmente.Asegúrese de usar UITableViewScrollPositionNone para evitar comportamientos de desplazamiento extraños.
fuente
[cell setSelected:YES]podría omitirse:selectRowAtIndexPathse encargará delselectedestado de la célulaEsto debería funcionar:
Solo asegúrese de que materialTable y tableView estén apuntando al mismo objeto.
¿Están los materiales conectados a tableView en Interface Builder?
fuente
Basado en la solución de saikirans, he escrito esto, lo que me ayudó. En el archivo .m:
Y en el archivo de encabezado:
Tampoco tengo mucha experiencia, así que verifique si hay pérdidas de memoria, etc.
fuente
Si desea seleccionar cualquier celda de la tabla con el primer clic y deseleccionar con el segundo, debe usar este código:
fuente
Swift 4:
fuente
self.tableView(tableView, didDeselectRowAt: indexPath)despuéstableView.deselectRow...porque no se llama automáticamenteSwift 2.0:
fuente
prueba esto
fuente
coloque este código de acuerdo con su código y obtendrá su celda deseleccionada.
fuente
¿Puedes probar esto?
Funcionó para mi.
fuente
Swift 3.0:
Siguiendo la sección de conformidad del protocolo de la guía de estilo rápido de ray wenderlich , para mantener los métodos relacionados agrupados, coloque esta extensión debajo de su clase de controlador de vista de esa manera:
fuente
Rápido
fuente
fuente
Swift 3
También me he encontrado con esto: cuando navegas o vuelves a la vista de tabla, generalmente no anula la selección de la fila seleccionada anteriormente para ti. Puse este código en el controlador de vista de tabla y funciona bien:
fuente
Swift 3/4
En ViewController:
En celda personalizada:
fuente
swift 3.0
fuente
Para que se desactive la selección de (DidDeselectRowAt) al hacer clic la primera vez debido a los datos precargados; debe informar a tableView que la fila ya está seleccionada para comenzar, de modo que un clic inicial luego deseleccione la fila:
// Swift 3:
fuente
Lo que he encontrado es que además de configurar la celda como seleccionada , debe informar a la vista de tabla para seleccionar la fila en la ruta de índice dada.
fuente