【问题标题】:Swift - UITableView didSelectRowAtIndexPath & didDeselectRowAtIndexPath Add & Remove indexPath IDsSwift - UITableView didSelectRowAtIndexPath & didDeselectRowAtIndexPath 添加和删除 indexPath ID
【发布时间】:2014-12-31 15:52:32
【问题描述】:

这是代码:

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 行时,您“在数组或字符串中”添加了不同的项目 ID,然后当我想取消选择它们时,如何从被取消选择的 indexPath.row 中取消选择确切的项目 ID 并找到它“在数组或字符串或其他东西中......”并删除了它? 如果您在 cmets 有问题,请原谅我的英语不好,如果可以,我会解释

【问题讨论】:

  • 我需要在数组或字符串中搜索这个被取消选择的ID,我想删除它。

标签: ios uitableview select swift deselect


【解决方案1】:

您可以通过将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)
        }
    }
}

【讨论】:

  • 你错了 :) var selectedItems = Dictionary()
  • 当我使用你的 var Xcode 时输出一个错误.. 我不知道 :)
  • 会不会更容易使用indexPathsForSelectedRows
【解决方案2】:

对于 Swift 3.0,使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2018-01-13
    相关资源
    最近更新 更多