我已经创建了一个表格视图并添加了一个自定义表格视图单元格。在自定义表格视图单元格内,我添加了4个标签,并在每个标签上传递了一个数组。我还启用了多行选择。我想将选定的行传递到下一个屏幕并在此处显示。
答案 0 :(得分:3)
选择行时,每次UITableView
didSelect 调用,以便可以为selectedRow的存储值创建数组,如果已在数组中而不是删除行。
selectedRow数组,您可以在下一个屏幕中使用它。
对于删除按钮,我使用mk_addTapHandler Button Extention you can see here
在我的项目中,同样的问题,但是按照我的设计,我在要删除的单元格上放了一个按钮,我解决了,所以您可以使用以下代码:
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)
}
}
答案 1 :(得分:-1)
如果您已经在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)
}