首页 > 解决方案 > 保存选定表格视图行的用户名

问题描述

我正在尝试保存与 tableView 中每一行对应的所有用户名。我有下面的代码,它似乎只将用户保存在第一行。不知道出了什么问题或如何解决。

var selectedIndexPathArray = [IndexPath?]() (outside of functions)


@IBAction func sendTapped(_ sender: Any) {
 ...
    guard let selectedIndexPathArray = self.tableView.indexPathForSelectedRow else {
        return
    }
    for user in selectedIndexPathArray {
        selectedUsers.append(followingKeys[user])
    }
    selectedUsers.append(User.current.username)
}


extension SendToPopOverViewController: UITableViewDataSource {
    ...
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        self.selectedIndexPathArray = tableView.indexPathsForSelectedRows!
    }

我在 viewDidLoad 中也有这个:

self.tableView.allowsMultipleSelection = true
self.tableView.allowsMultipleSelectionDuringEditing = true

标签: iosswiftuitableview

解决方案


selectedIndexPathArray首先,您可能不希望UITableView跟踪选定的索引路径。其次,在你的sendTapped(_:)函数中,你应该在你的语句中使用indexPathsForSelectedRows而不是。假设这是一个用户名数组,代码应该如下:indexPathForSelectedRowguard letfollowingKeys

guard let selectedIndexPathArray = self.tableView.indexPathsForSelectedRows else {
    return
}
for indexPath in selectedIndexPathArray {
    selectedUsers.append(followingKeys[indexPath.row])
}
selectedUsers.append(User.current.username)

推荐阅读