【问题标题】:Swift looping through arraySwift循环遍历数组
【发布时间】:2018-11-23 21:22:18
【问题描述】:

我有一个UITableView,它有 100 个单元格。我想创建一个数组来保存该表的索引值,如果选定的表行与数组中的任何值匹配,我想禁用表单元格。

我发现以下代码可以禁用我给它的特定单元格。

UITableViewCellSelectionStyle.none

对此的任何帮助将不胜感激。

这就是我检查选择了哪个单元格的方式:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {


            let selectedRow = tableView.indexPathForSelectedRow?.row
            let workoutSelected = selectedRow
            stringPassedTableView = workoutSelected!

            let myVC = storyboard?.instantiateViewController(withIdentifier: "showWorkout") as! WorkoutViewController
            myVC.stringPassed = stringPassedTableView
            navigationController?.pushViewController(myVC, animated: true)


    }

【问题讨论】:

  • 我还应该注意到,我发现我可以通过给它一个值来实现这一点: if(indexPath.row == 2) { UITableViewCellSelectionStyle.none }
  • 所以如果你需要禁用第 0、5、13、67 行的单元格,那么你需要一个包含 0、5、13、67 的数组吗?
  • Joakim - 正确
  • 不要使用包含索引路径的数组。将selectedenabled 信息添加到您的数据模型。好处是 Ui 将在cellForRow 中可靠地更新。
  • 你为什么打电话给indexPathForSelectedRow?那是没有意义的。该方法在indexPath 参数中为您提供索引路径。

标签: ios swift loops uitableview


【解决方案1】:

您可以使用以下 tableview 委托方法来允许或不选择

tableView:willSelectRowAtIndexPath:

只需检查单元格索引是否在禁用的单元格索引中,如果是则返回 nil。否则返回索引路径。

您可以在此处查看文档: https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614943-tableview?language=objc#return-value

【讨论】:

    【解决方案2】:

    一种更好的方法是,创建一个模型类数组,将哪些数据传递给 tableView 数据源。

    在模型类中添加一个名为“isSelectable”的属性,并在解析模型类数据时正确分配它。

    使用此“isSelectable”属性,当您选择一行时,检查此属性是真还是假并相应地执行操作。

    希望你能理解!!

    【讨论】:

      【解决方案3】:

      你有一个数组(或集合)作为类属性

      var disabledRows = [IndexPaath]()
      

      然后简单地在函数的开头使用它

      override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
          if disabledRows.contains(indexPath) { return }
      
          // code to handle row with enabled cell
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-04
        • 1970-01-01
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        相关资源
        最近更新 更多