Сохранение имен пользователей выбранных строк таблицы - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь сохранить все имена пользователей, соответствующие каждой строке в 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

1 Ответ

0 голосов
/ 07 января 2019

Прежде всего, вы, вероятно, не хотите selectedIndexPathArray, поскольку UITableView отслеживает выбранные пути индекса. Во-вторых, в вашей функции sendTapped(_:) вы должны использовать indexPathsForSelectedRows вместо indexPathForSelectedRow в вашем guard let выражении. Предполагая, что followingKeys является массивом имен пользователей, код должен выглядеть следующим образом:

guard let selectedIndexPathArray = self.tableView.indexPathsForSelectedRows else {
    return
}
for indexPath in selectedIndexPathArray {
    selectedUsers.append(followingKeys[indexPath.row])
}
selectedUsers.append(User.current.username)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...