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...
}