Многократный выбор строки Swift - PullRequest
2 голосов
/ 08 апреля 2019

Я использую tableView для отображения данных пользователей, я хочу включить выбор нескольких пользователей, и на данный момент он работает неправильно, так что, когда я отменяю выбор выбранного пользователя, данные пользователя все еще остаются в массиве, который я храню внутри , Как я могу это исправить. ниже мой код в настоящее время

struct ChatUser {
   var id: String
var name: String
}

var selectedUser: [ChatUser] = []

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if self.selectedUser.contains(self.users[indexPath.row]) {
            let myIndex = self.selectedUser.index(of: self.users[indexPath.row])
            self.selectedUser.remove(at: myIndex!)
        } else {
            self.selectedUser.append(self.users[indexPath.row])
        }

        selectedUser.forEach { (user) in
            print("SELECTD \(user.id)")
        }
    }

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

Для удаления выбранных данных для множественного выбора вы можете использовать didDeselectRowAt метод делегата просмотра таблицы.

 struct ChatUser {
       var id: String
    var name: String
    }

    var selectedUser: [ChatUser] = []

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

            self.selectedUser.append(self.users[indexPath.row])

            selectedUser.forEach { (user) in
                print("SELECTD \(user.id)")
            }
    }

    func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {   
           if self.selectedUser.contains(self.users[indexPath.row]) {
                let myIndex = self.selectedUser.index(of: self.users[indexPath.row])
                self.selectedUser.remove(at: myIndex!)
            }
    }
2 голосов
/ 08 апреля 2019

Здесь нужно убедиться в том, что структура уравниваемая

extension ChatUser: Equatable {

    static func == (lhs: ChatUser, rhs: ChatUser) -> Bool {
        return lhs.id == rhs.id
    }
}

Именно поэтому ваши .contains и .indexOf не работают должным образом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...