Я новичок в swift, и мне удалось создать приложение для чата, просмотрев учебники. Прямо сейчас, когда я нажимаю на пользователя, он ведет меня к контроллеру чата, и он успешно может получать сообщения. Все отлично работаетТо, что мне нужно реализовать, - это возможность разбивать чат на страницы, когда я прокручиваю вверх. Прямо сейчас я получаю все сообщения каждый раз, когда открывается комната чата.
Я проверил документы Google Firestore о том, как это сделать, но из-за жизни я не могу собрать это воедино,Имейте честное представление о том, как это работает теоретически. Но так как я добавил слушателей снимков, это немного сбивает с толку.
Также понятия не имею, как настроить scrollView для загрузки при достижении вершины
class ChatLogController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
//MARK: Initialize
fileprivate let connect: Connect
var listener: ListenerRegistration?
var currentUser: User?
init(connect: Connect){
self.connect = connect
super.init()
}
//MARK: ****View Did Load****
override func viewDidLoad() {
super.viewDidLoad()
fetchCurrentUser()
fetchPaginatedMessages()
setupView()
}
//MARK: Fetch Current User
fileprivate func fetchCurrentUser(){
//Some code
print("Current User Fetched Successfully")
self.currentUser = User(dictionary: data)
}
}
//MARK: Setup View
//Some code that fetches the front end
//MARK: FetchPaginatedMessages - Code does not contain attempted pagination
fileprivate func fetchPaginatedMessages(){
print("Fetching Messages")
guard let cUid = Auth.auth().currentUser?.uid else {return}
let query = Firestore.firestore().collection("matches").document(cUid).collection(connect.uid).order(by: "Timestamp")
listener = query.addSnapshotListener { (querySnapshot, error) in
if let error = error{
print("There was an error fetching messages", error.localizedDescription)
return
}
querySnapshot?.documentChanges.forEach({ (change) in
if change.type == .added{
let dictionary = change.document.data()
self.items.append(.init(dictionary: dictionary))
print("ARCHID ---- FIRESTORE HAS BEEN CONTACTED FETCHING MESSAGES")
}
})
self.collectionView.reloadData()
self.collectionView.scrollToItem(at: [0, self.items.count - 1], at: .bottom, animated: true)
print("Fetched messages")
}
}
Включены основные части кода. Опущен нерелевантный код для удобства чтения. В func fetchPaginatedMessages я собираюсь выполнить нумерацию страниц.