Swift - UITableView didSelectRowAtIndexPath & didDeselectRowAtIndexPath Добавить и удалить идентификаторы indexPath

Это код:

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
}

Как добавить идентификатор элемента "в массиве или в строке или что-то еще..."? Например, когда вы выбираете строки 0,1,4,5, у вас есть разные идентификаторы элементов, добавленные "в массиве или в строке", а затем, когда я хочу отменить их выбор, как отменить выбор точного идентификатора элемента из выбранного индекса indexPath.row и найти это "в массиве или в строке или что-то еще..." и удалил его? Извините за мой ломаный английский, если у вас есть вопросы, задавайте в комментариях, и я объясню, если смогу

2 ответа

Решение

Вы можете сделать это довольно просто, добавив 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)
        }
    }
}

Для Swift 3.0 используйте

override  func tableView(_ tableView: UITableView, didSelectRowAt
 indexPath: IndexPath){
     //your code...  
}
Другие вопросы по тегам