es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo eliminar (restablecer) todas las marcas de verificación múltiples seleccionadas?

Tengo una tableView con selección múltiple con accesorios de tipo checkmark.

Luego tengo un botón “Resetear todo” en la barra de navegación. Quiero borrar (eliminar/reiniciar) TODOS los checkmarks con este botón.

Primero la estructura y el arreglo que hice:

struct Area {
let name : String
var isSelected : Bool
init(name : String, isSelected : Bool = false) {
self.name = name
self.isSelected = isSelected
} }

var areas = [Area(name: “Nombre1”), Area(name: “Nombre2″), Area(name:”Nombre3”), Area(name: “Nombre4”), Area(name: “Nombre5”)]

En “didSelectRowAt” tengo esto:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
areas[indexPath.row].isSelected.toggle()
tableView.reloadRows(at: [indexPath], with: .none) }

En “cellForRowAt” tengo esto:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = myTableView.dequeueReusableCell(withIdentifier: “celda”, for: indexPath) as! MyTableViewCell

let area = areas[indexPath.row]
cell.textLabel?.text = area.name
cell.accessoryType = area.isSelected ? .checkmark : .none }

Luego tengo un botón “Resetear todo” en mi Barra de Navegación:

@IBAction func resetButtonTapped(_ sender: UIBarButtonItem)
{//…}

Con este botón quiero reiniciar todos los checkmarks seleccionados. No sé cómo hacer esto.

¿Alguien puede ayudarme con cómo funcionará esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para restablecer todas las marcas de verificación en la tableView, es necesario configurar la propiedad isSelected en false de todos los objetos Area en el arreglo areas. Así se puede lograr con el botón “Restablecer todo”:

    @IBAction func resetButtonTapped(_ sender: UIBarButtonItem) {
        // configurar propiedad isSelected en false de todos los objetos Area
        for i in 0..<areas.count {
            areas[i].isselected = false
        }
        // recargar todas las filas de tableview para eliminar las marcas de verificación
        mytableview.reloaddata()
    }
    

    este método itera a través de todos los objetos area en el arreglo areas y establece su propiedad isselected en false. luego, recarga todas las filas de tableview para eliminar todas las marcas de verificación. cuando se recarga la tableview, se llama de nuevo al método cellforrowatindexpath para cada fila visible, y se establece el accesorio de tipo checkmark en .none para todas las filas. {=”” areas[i].isselected=”false” }=”” recargar=”” todas=”” las=”” filas=”” de=”” tableview=”” para=”” eliminar=”” las=”” marcas=”” de=”” verificación=”” mytableview.reloaddata()=”” }=”” este=”” método=”” itera=”” a=”” través=”” de=”” todos=”” los=”” objetos=”” area=”” en=”” el=”” arreglo=”” areas=”” y=”” establece=”” su=”” propiedad=”” isselected=”” en=”” false.=”” luego,=”” recarga=”” todas=”” las=”” filas=”” de=”” tableview=”” para=”” eliminar=”” todas=”” las=”” marcas=”” de=”” verificación.=”” cuando=”” se=”” recarga=”” la=”” tableview,=”” se=”” llama=”” de=”” nuevo=”” al=”” método=”” cellforrowatindexpath=”” para=”” cada=”” fila=”” visible,=”” y=”” se=”” establece=”” el=”” accesorio=”” de=”” tipo=”” checkmark=”” en=”” .none=”” para=”” todas=”” las=””></areas.count {
    areas[i].isselected = false
    }
    // recargar todas las filas de tableview para eliminar las marcas de verificación
    mytableview.reloaddata()
    }

    este método itera a través de todos los objetos area en el arreglo areas y establece su propiedad isselected en false. luego, recarga todas las filas de tableview para eliminar todas las marcas de verificación. cuando se recarga la tableview, se llama de nuevo al método cellforrowatindexpath para cada fila visible, y se establece el accesorio de tipo checkmark en .none para todas las filas.>

Comments are closed.