如何在swift中一次只选择两个UITableview单元格

Posted

技术标签:

【中文标题】如何在swift中一次只选择两个UITableview单元格【英文标题】:How to make only two cells of UITableview selectable at a time in swift 【发布时间】:2017-07-18 10:51:39 【问题描述】:

是否可以一次只选择 UITableview 的两个单元格?目前我只能设置 UITableView 的单选或多选。

请任何人都可以为此在 Swift3 中发布想法或代码?

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("MyIdentifier") as! UITableViewCell
    let currentItem = data[indexPath.row]
    if currentItem.selected 
      cell.imageView!.image = UIImage(named:"check")!
      cell.textLabel!.font = UIFont(name:"OpenSans-Bold", size:15)
     else 
      cell.imageView!.image = nil
      cell.textLabel!.font = UIFont(name:"OpenSans-Regular", size:15)
    

    return cell
  

【问题讨论】:

【参考方案1】:

在选择单元格时,您将在@ 987654321中获取回调。因此,您可以跟踪选定的单元格并相应地取消选择单元格。使用数组来跟踪所有选定的单元格

var selectedIndexes = [Int]()


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
        if (selectedIndexes.contains(indexPath.row)) 
           selectedIndexes.remove(at: selectedIndexes.index(of: indexPath.row)!)
         else 
            if selectedIndexes.count == 2 
                selectedIndexes[0] = indexPath.row
             else 
                selectedIndexes.append(indexPath.row)
            

        
        tableView.reloadData()


   override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("MyIdentifier") as! UITableViewCell
    let currentItem = data[indexPath.row]
    if selectedIndexes.contains(indexPath.row) 
      cell.imageView!.image = UIImage(named:"check")!
      cell.textLabel!.font = UIFont(name:"OpenSans-Bold", size:15)
     else 
      cell.imageView!.image = nil
      cell.textLabel!.font = UIFont(name:"OpenSans-Regular", size:15)
    

    return cell
  

【讨论】:

怎么做?? 它显示“Type int has no member contains”错误 很抱歉,将 selectedIndexes 声明为 var selectedIndexes = [Int]() 时出错

以上是关于如何在swift中一次只选择两个UITableview单元格的主要内容,如果未能解决你的问题,请参考以下文章

想拿起工具或枪支,但想在统一 c# 中一次只选择一个

如何在 Flutter 中一次只在屏幕上显示一个表单域?

UITableview如何一次只显示一个单元格

在反应jsx中一次遍历一个数组

在vim中一次视觉选择两个东西

在phpwebsocket中一次只有一个连接