处理 'How many items do you have selected' 类型计数器的最佳方法是什么?

What is the best way to approach a 'How many items do you have selected' type counter?

我的意思是:我有一个 Table 视图和已填充的单元格,我希望每个单元格在被选中时 link 处于其打开或关闭状态,在其布尔值。当它处于 'On' 状态时,它会向计数器添加 +1,当它被单击到 'Off' 状态时,它会收回该计数(因此减去)。我在 class 中有一个 bool 填充 table 视图,这样它在通过搜索栏过滤数据时不会混淆选择

想象一个 'How many items do you have selected' 类型的计数器。

我不确定的是如何将 bool 连接到选择本身,以免它“混淆”。欢迎举例!

谢谢

为了解决这个问题,我需要一个自定义 table 视图单元格。这里有一个很棒的教程:https://www.youtube.com/watch?v=OQYqGM5_wVY&list=LL&index=16&t=752s 它实际上显示了 table 视图中开关的使用。

要有一个计数器,我会使用 UINotification Center。在自定义 table 视图单元格 swift 文件中,我会在您的开关操作中添加类似以下代码的内容:

if switch.isOn{
   NotificationCenter.default.post(Notification(name: Notification.Name("tableSwitchClicked"), object: nil, userInfo: ["isOn":true]))
} else {
   NotificationCenter.default.post(Notification(name: Notification.Name("tableSwitchClicked"), object: nil, userInfo: ["isOn":false]))
}

“开关”是您开关的插座名称。 然后将其添加到 viewDidLoad 中的 viewcontroller swift 文件中:

NotificationCenter.default.addObserver(self, selector: #selector(changeSwitchCounter(_:)), name: Notification.Name("tableSwitchClicked"), object: nil)

最后,在主视图控制器中 viewDidLoad 之后的代码中:

@objc func changeSwitchCounter(_ notification: Notification){
   let positiveChange = notification.userInfo!["isOn"] as! Bool
   if positiveChange == true {
      switchOnCount += 1
   } else if positiveChange == false {
      switchOnCount -= 1
   }
   
}

其中 switchOnCount 是您用来跟踪开关数量的变量。我希望这可以帮助你!有问题欢迎评论。

可能最简单的解决方案是使用简单的变量“计数器”并在 UITableViewDelegate 方法 didSelectRowAt(向上计数)和方法 didDeselectRowAt(向下计数)

中计算您的选择]

以下是一些步骤和示例代码:

  1. 创建 UITableview 并使您的 UIViewController 符合 UITableViewDelegate 协议。然后将方法添加到您的 UIViewController 并符合 yourTableView.delegate = yourViewController (可能只是自己)。

添加委托方法:

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.counter += 1
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    self.counter -= 1
}