Swift - UITableView didSelectRowAtIndexPath&didDeselectRowAtIndexPath添加和删除indexPath ID

Bog*_*nov 8 select uitableview ios swift deselect

这是代码:

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
}
Run Code Online (Sandbox Code Playgroud)

如何在数组或字符串或其他东西中添加项目ID"?例如,当您选择行0,1,4,5时,您在"Array或String"中添加了不同的Item Ids,然后当我想取消选择它们时,如何从取消选择的indexPath.row中取消选择精确的Item Id并查找它"在数组或字符串或其他东西......"并删除它?如果您有任何问题请在评论中提出我的英语,我会解释是否可以

Nat*_*ook 23

您可以通过向Dictionary表视图控制器添加属性来完成此操作:

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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Aks*_*Aks 5

对于Swift 3.0,请使用

override  func tableView(_ tableView: UITableView, didSelectRowAt
 indexPath: IndexPath){
     //your code...  
}
Run Code Online (Sandbox Code Playgroud)