如何将 tableView 的多行传输到另一个 ViewController
How can I transfer multiple rows of a tableView to another ViewController
我正在尝试在我的应用程序中添加一项功能,以便一次将多个成员添加到一个操作中。成员列在 tableView
中,用户可以使用 .allowsMultipleSelection = true
函数一次 select 多行。我得到了以下代码,但这不起作用。我认为我的想法可行,但不是我在代码中使用的方式:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let destination = segue.destination as? AddMultipleMemberTransactionViewController,
let selectedRows = multipleMemberTableView.indexPathsForSelectedRows else {
return
}
destination.members = members[selectedRows]
}
这里有人知道我该如何解决这个问题,因为有一个错误:
Cannot subscript a value of type '[Member?]' with an index of type '[IndexPath]'
我在应用程序中拥有相同的功能,但仅适用于一名会员。我在 indexPathForSelectedRow
之后的 let selectedRows
行中有一个 .row。 indexPathsForSelectedRows
有类似的功能吗?
或者这是错误的方法吗?
你需要
destination.members = selectedRows.map{ members[[=10=].row] }
如 indexPathsForSelectedRows 所示,它 returns 一个 IndexPath 数组。您需要做的是根据这些路径创建一个成员对象数组。
假设您有一个 "members" 数组,其中包含用户可以 select 来自的所有成员,而您的 table 只有 1 个部分:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var selectedMembers: [Member] = []
guard let destination = segue.destination as? AddMultipleMemberTransactionViewController,
let selectedIndexes = multipleMemberTableView.indexPathsForSelectedRows else {
return
}
for selectedIndex in selectedIndexes {
let selectedMember = members[selectedIndex.row]
selectedMembers.append(selectedMember)
}
destination.members = selectedMembers
}
也可以使用数组map()函数将for循环改为单行操作:
let selectedMembers: [Member] = selectedRows.map{ members[[=11=].row] }
两者应该有效地做同样的事情。
我正在尝试在我的应用程序中添加一项功能,以便一次将多个成员添加到一个操作中。成员列在 tableView
中,用户可以使用 .allowsMultipleSelection = true
函数一次 select 多行。我得到了以下代码,但这不起作用。我认为我的想法可行,但不是我在代码中使用的方式:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let destination = segue.destination as? AddMultipleMemberTransactionViewController,
let selectedRows = multipleMemberTableView.indexPathsForSelectedRows else {
return
}
destination.members = members[selectedRows]
}
这里有人知道我该如何解决这个问题,因为有一个错误:
Cannot subscript a value of type '[Member?]' with an index of type '[IndexPath]'
我在应用程序中拥有相同的功能,但仅适用于一名会员。我在 indexPathForSelectedRow
之后的 let selectedRows
行中有一个 .row。 indexPathsForSelectedRows
有类似的功能吗?
或者这是错误的方法吗?
你需要
destination.members = selectedRows.map{ members[[=10=].row] }
如 indexPathsForSelectedRows 所示,它 returns 一个 IndexPath 数组。您需要做的是根据这些路径创建一个成员对象数组。
假设您有一个 "members" 数组,其中包含用户可以 select 来自的所有成员,而您的 table 只有 1 个部分:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var selectedMembers: [Member] = []
guard let destination = segue.destination as? AddMultipleMemberTransactionViewController,
let selectedIndexes = multipleMemberTableView.indexPathsForSelectedRows else {
return
}
for selectedIndex in selectedIndexes {
let selectedMember = members[selectedIndex.row]
selectedMembers.append(selectedMember)
}
destination.members = selectedMembers
}
也可以使用数组map()函数将for循环改为单行操作:
let selectedMembers: [Member] = selectedRows.map{ members[[=11=].row] }
两者应该有效地做同样的事情。