Swift - UITableView didSelectRowAtIndexPath& didDeselectRowAtIndexPath Add&删除indexPath ID

时间:2014-11-04 16:46:37

标签: ios uitableview select 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
}

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

,请对我的英语破碎感到抱歉

2 个答案:

答案 0 :(得分: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)
        }
    }
}

答案 1 :(得分:4)

对于Swift 3.0,请使用

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