![](/img/trans.png)
[英]Pass the array in multiple selected table cell into next view controller
[英]How to display multiple selected rows in a custom table view cell in the next screen
我创建了一个表格视图并添加了一个自定义表格视图单元格。 在自定义表格视图单元格中,我添加了 4 个标签并在每个标签上传递了一个数组。 我还启用了多行选择。 我想将选定的行传递到下一个屏幕并在那里显示。
当您选择行时,每次UITableView
didSelect调用时,您可以为 selectedRow 的存储值创建数组,如果已经在数组中而不是删除行。
selectedRow 数组,您可以在下一个屏幕中使用它。
对于删除按钮,我使用mk_addTapHandler Button Extension 你可以在这里看到
在我的项目中同样的问题,但根据我的设计,我在单元格上放了一个按钮用于删除,我解决了所以你可以使用下面的代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellDemo", for: indexPath)
cell.textLabel?.text = "\(indexPath.row)"
cell.btnDelete.mk_addTapHandler { (btn)
for (i,objValue) in selectedRow.enumerated() {
if indexPath.row == objValue {
self.selectedRow.remove(at: i)
for (i,objValue) in selectedRow.enumerated() {
if indexPath.row < objValue {
selectedRow[i] = objValue - 1
}else {
selectedRow[i] = objValue + 1
}
}
}
}
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
selectedRow.append(indexPath.row)
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
for (index, element) in selectedRow.enumerated() {
if indexPath.row == element {
selectedRow.remove(at: index)
}
}
}
@IBAction func doneClick(_ sender: Any) {
if let VC = self.storyboard?.instantiateViewController(withIdentifier: "nextScreen") as! nextScreen
VC.tableViewSelectedRow = selectedRow
self.navigationController?.pushViewController(VC, animated: true)
}
}
如果您已经在 tableView 中启用了多行选择,那么它就相对简单了。 在您的按钮操作方法中获取所选行的 indexPaths,然后使用它们从数据源中提取数据并将它们注入下一个 viewController。 下面为您提供了核心功能,但由于您没有共享数据源或表设计的代码,也没有说明您是否正在使用 IB 或应用程序代码,因此您必须使其适合您的环境。
假设:
mainData
的数组中NextViewController
的类@objc doneButtonTapped(_ sender: UIButton) {
let indexPaths = tableView.indexPathsForSelectedRows
let selectedData = indexPaths.map{mainData[indexPath.row]}
let nextVC = NextViewController()
nextVC.data = selectedData
navigationController?.pushViewController(nextVC, animated: true)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.