Данные были заменены или отсутствуют во время прокрутки просмотра коллекции - PullRequest
0 голосов
/ 25 июня 2019

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

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

func loadMessageData(){
    self.message.removeAll()
    guard let uid = Auth.auth().currentUser?.uid else{
        return
    }
    let userref = Database.database().reference().child("Message").child(uid)
        userref.child(self.senderID!).observe(.childAdded, with: { (snapshot) in
            print(snapshot)
            if let dictonary = snapshot.value as? [String:AnyObject]{


                let key = snapshot.key
                let mainDict = NSMutableDictionary()
                mainDict.setObject(key, forKey: "userid" as NSCopying)
                self.namesArray.add(mainDict)


                let message = Message(dictionary: dictonary)
                self.message.append(message)

                self.timer?.invalidate()
                self.timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.handleReload), userInfo: nil, repeats: false)

            }
        }, withCancel: nil)
}




extension ChatViewController: UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return message.count
    }
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellID, for: indexPath) as! ChatMessageCell
        let message1 = message[indexPath.item]
        cell.tetxtView.text = message1.msg
        cell.bubbleWidthAnchor?.constant = estimatedFrameForText(text: message1.msg!).width + 32
        let ketID = message1.key_id

        if ketID == Auth.auth().currentUser?.uid{
            cell.bubbleView.backgroundColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1)
            cell.bubbleViewRightAnchor?.isActive = false
            cell.bubbleViewLeftAnchor?.isActive = true
        }else{
            cell.bubbleView.backgroundColor = UIColor(red: 0/255, green: 158/255, blue: 214/255, alpha: 1)
            cell.tetxtView.textColor = UIColor.white
            cell.bubbleViewRightAnchor?.isActive = true
            cell.bubbleViewLeftAnchor?.isActive = false
        }
        return cell
    }
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        var height: CGFloat = 80

        if let mesg = message[indexPath.item].msg{
            height = estimatedFrameForText(text: mesg).height + 20
        }
        return CGSize(width: view.frame.width, height: height)
    }

}

ивот методы сбора данных для заполнения

проблема в том, что когда я прокручиваю сообщение было заменено или пропало

enter image description here

enter image description here пожалуйста, проверьте скриншот сначала я получаю сообщения и после прокрутки я вернулся наверх сообщение отсутствует

1 Ответ

1 голос
/ 25 июня 2019

cell.tetxtView.textColor снята с производства, убедитесь, что вы добавили его в if также

if ketID == Auth.auth().currentUser?.uid{
    cell.bubbleView.backgroundColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1) 
    cell.tetxtView.textColor = UIColor.black /////// here
    cell.bubbleViewRightAnchor?.isActive = false
    cell.bubbleViewLeftAnchor?.isActive = true
}else{
    cell.bubbleView.backgroundColor = UIColor(red: 0/255, green: 158/255, blue: 214/255, alpha: 1)
    cell.tetxtView.textColor = UIColor.white
    cell.bubbleViewRightAnchor?.isActive = true
    cell.bubbleViewLeftAnchor?.isActive = false
}

Цвет текста белый, поэтому он совпадает с фоном своего суперпредставления, поэтому не отображается

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