如何将实时表格视图选择的单元格计数器作为 UIBarButtonItem

How to have a real time tableview selected cell counter as a UIBarButtonItem

我在尝试添加标题为 "Next(#)" 的 UIBarButtonItem 时遇到困难,其中 # 是一个动态计数器,用于计算用户在 table 视图中选择的单元格数量正在选择他们。跟踪单元格选择的数组已构建并正常工作,但计数未更新;控制台中的打印行按预期工作。我稍后的意图是仅在计数大于零时显示“(#)”,但现在我专注于在每个单元格获得 selected/deselected.

后更新计数
override func viewWillAppear(_ animated: Bool) {

    let barButtonCounter = "(\(invitedContacts.count))"
    let barButtonItemText = "Next\(barButtonCounter)"

    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "\(barButtonItemText)", style: .done, target: self, action: nil)
}

这是我能找到的最接近的 SO thread,但据我所知,它并不完全符合我的要求,至少在视觉上如此 design-wise 但也许完全是用 [=20= 编写的] 我不完全理解,因为我是 swift 的新手。我的偏好是在不导入库的情况下本地构建它。

您只在 viewWillAppear 中调用一次,我建议您创建一个私有函数,将新计数作为参数并更新按钮,然后在每个 didSelectdidDeselect 来自 tableView

的委托方法

试试这行

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  //your code for your counter
   self.navigationItem.rightBarButtonItem = nil
   let barButtonCounter = "(\(invitedContacts.count))"
   let barButtonItemText = "Next\(barButtonCounter)"

   navigationItem.rightBarButtonItem = UIBarButtonItem(title: "\(barButtonItemText)", style: .done, target: self, action: nil)
}