UICollectionview Добавить данные в массив Swift - PullRequest
0 голосов
/ 30 мая 2018

У меня есть приложение для группового чата, в которое я могу добавлять пользователей в группу всякий раз, когда я нажимаю на пользователя.Страница выбора члена группы выглядит следующим образом:

enter image description here

всякий раз, когда я нажимаю на пользователя, он будет добавлен в collectionView сверху.Мой collectionView находится сверху, а tableview - снизу.Как только я нажимаю на пользователя, он выглядит следующим образом:

enter image description here

У меня ошибка, из-за которой не имеет значения, где я нажимаю, даже если я нажимаю навторая строка, user tester 2 или третья строка, user apple, collectionView показывает мне первого пользователя, а затем показывает второго пользователя, добавленного к нему, а также третьего и четвертого.Как мне сделать так, чтобы он отображал пользователя, на которого я нажал?

для моей коллекции.Есть ли ошибки, которые я сделал на моем столе? DidSelectRowAt?

1 Ответ

0 голосов
/ 30 мая 2018

Я думаю, что в вашем collectionView cellForRow следует использовать ChoosenUser Массив не ваш основной массив пользователей , который вы использовали для заполнения tableView

Ваш рабочий процесс

в TableView DidSelect Вы добавляете Selected User в массив self.chosenUser как правильный

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

    let user = users[indexPath.row]
    /// appending user
    self.chosenUser.append(user)
    updateCollectionView()
    }
}

Теперь переходите к collectionView - верно, вы вернули выбранный счетчик пользовательских массивов

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return chosenUser.count
}

Теперь, когда речь заходит об изъятии пользователя из коллекции, в CellViewRow

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! ChosenUserCollectionViewCell

    /// Here You did The mistake - 
    /// You did used main Array **Users**
    let user = users[indexPath.row]

    /// You actually need
    let user = choosenUser[indexPath.row] 

    /// What's Happening?
    /// You selected one user from tableView Appended it to newArray
    /// You Setted collectionView count according to new Array
    /// But you used main Array
    /// ---------------------Example-----------------
    ///Case -> Count is 1 - First user from mainArray will be shown
    /// Case -> count is 2 - First two user from mainArray Users will be shown
    cell.chosenUserImage.layer.cornerRadius = 30
    cell.chosenUserImage.layer.masksToBounds = true
    cell.chosenUserImage.contentMode = .scaleAspectFill

    if let profileImageUrl = user.profileImageUrl {
        cell.chosenUserImage.loadImageUsingCacheWithUrlString(profileImageUrl)
    } else {
        cell.chosenUserImage.image = UIImage(named: "profileIcon")
    }

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