Tengo un UITableView y algunos UITableViewCells que he creado manualmente a través de la el Interface Builder. He asignado a cada celda un outlet, la mensajería instantánea y la conexión a la UITableView en el CellForRowAtIndexPath método. En este método, yo uso el switch(case) método para hacer que las células específicas que aparecen en la UITableView, depende del caso.

Ahora, quiero encontrar a una celda específica y comprobar si es que existe, dentro de la UITableView. Yo uso el método: UITableView.visibleCells para obtener una matriz de las células en la vista de tabla. Mi pregunta es – ¿cómo puedo comprobar si las células específicas que existe en la matriz? puedo utilizar la toma de corriente que he asignado a él de alguna manera? – (La mejor solución),O, puedo usar un identificador y cómo?

Gracias 🙂

InformationsquelleAutor ozking | 2011-11-08

4 Comentarios

  1. 77

    Tenga en cuenta que usted puede también utilizar indexPathsForVisibleRows de esta manera:

        NSUInteger index = [_people indexOfObject:person];
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0];
        if ([self.tableView.indexPathsForVisibleRows containsObject:indexPath]) {
          [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                                withRowAnimation:UITableViewRowAnimationFade];
        }

    Si usted tiene el indexPath (que no necesita de la Celda real) podría ser más barato.

    PS: _people es el NSArray utiliza como mi backend en este caso.

    • Esta solución es mejor que la solución aceptada en la mayoría de los casos.
    • Esto funciona perfecto!! Gracias:)
  2. 17
    if ([tableView.visibleCells containsObject:myCell])
    {
        //Do your thing
    }

    Se supone que tienen una instancia independiente de la variable que contiene la celda en la que está interesado, yo creo que sí, a partir de la pregunta, pero lo que no está claro.

    • Gracias, es otra forma de implementar la solución que Sorig me dio 🙂
    • Esta es la respuesta correcta a la pregunta original, si una celda es visible. Gracias por la limpia y sencilla la respuesta.
  3. 11

    Puede utilizar el UITableView método:

    [tableView indexPathForCell:aCell];

    Si la celda no existe en el formato tableview se devuelve nil. De lo contrario obtendrá de la célula NSIndexPath.

    • Eso es trabajo, gracias 🙂
    • Esto no funciona cuando la reutilización de las células
    • Gracias, Funciona +1
  4. 1

    Usted puede hacer esto en Swift 3 para comprobar si el UITableViewCell es visible:

    let indexPathToVerify = IndexPath(row: 0, section: 0)
    let cell = tableView.cellForRow(at: indexPathToVerify)
    
    if tableView.visibleCells.contains(cell) {
        //the cell is visible
    }

Dejar respuesta

Please enter your comment!
Please enter your name here