web-dev-qa-db-fra.com

Swift - UITableView didSelectRowAtIndexPath & didDeselectRowAtIndexPath Ajouter et supprimer des identifiants indexPath

C'est le code:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let selectedItem = items.objectAtIndex(indexPath.row) as String
    let itemId = selectedItem.componentsSeparatedByString("$%^")
    //itemId[1] - Item Id
}

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
    let selectedItem = items.objectAtIndex(indexPath.row) as String
    let itemId = selectedItem.componentsSeparatedByString("$%^")
    //itemId[1] - Item Id
}

Comment ajouter un identifiant d'élément "dans un tableau, dans String ou autre chose ..."? Lorsque vous sélectionnez les lignes 0,1,4,5, par exemple, vous avez différents ID d’élément ajoutés «dans un tableau ou dans une chaîne», puis lorsque je souhaite les désélectionner, comment désélectionner l’ID d’élément exact dans indexPath.row qui est désélectionné et rechercher. il "dans Array ou dans String ou quelque chose d'autre ..." et l'a supprimé? Désolé pour mon anglais cassé si vous avez une question demander dans les commentaires et je vous expliquerai si je peux

7
Bogdan Bogdanov

Vous pouvez le faire simplement en ajoutant une propriété Dictionary à votre contrôleur de vue de table:

class ViewController : UITableViewController {
    var selectedItems: [String: Bool] = [:]

    // ...

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        let selectedItem = items.objectAtIndex(indexPath.row) as String
        let itemId = selectedItem.componentsSeparatedByString("$%^")
        // add to self.selectedItems
        selectedItems[itemId[1]] = true
    }

    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
        let selectedItem = items.objectAtIndex(indexPath.row) as String
        let itemId = selectedItem.componentsSeparatedByString("$%^")
        // remove from self.selectedItems
        selectedItems[itemId[1]] = nil
    }

    // can access the items as self.selectedItems.keys
    func doSomething() {
        for item in selectedItems.keys {
            println(item)
        }
    }
}
23
Nate Cook

Pour Swift 3.0, utilisez

override  func tableView(_ tableView: UITableView, didSelectRowAt
 indexPath: IndexPath){
     //your code...  
}
2
Aks