Я хотел бы передать данные из FeedCollectionViewCell в другой ChatViewController.
Внутри контроллера представления фида
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath) as! FeedCollectionViewCell
cell.postTextView.text = posts.reversed()[indexPath.row].caption
cell.postImageView.image = UIImage(named: "photoplaceholder.jpg")
cell.priceTextView.text = posts.reversed()[indexPath.row].price
cell.categoryTextView.text = posts.reversed()[indexPath.row].category
cell.usernameLabel.text = posts.reversed()[indexPath.row].username
cell.buttonEvents = {
let storyboard = UIStoryboard(name: "Main" , bundle: nil)
let chatViewController =
storyboard.instantiateViewController(withIdentifier: "chat")
self.present(chatViewController, animated: true,completion: nil)
var receiverIDNumber = cell.usernameLabel.text
}
// Я хочу передать receiveIDIDNumber в ChatViewController
Внутри ChatViewController:
func sendDataToDatabase(message: String){
let ref = Database.database().reference()
let senderIDNumber = Auth.auth().currentUser?.uid
**//I want receiverIDNumber to be the data that is passed from FeedViewController**
let receiverIDNumber = "21"
let postsReference = ref.child("chats")
let newPostId = postsReference.childByAutoId().key
let newPostReference = postsReference.child(newPostId)
newPostReference.setValue(["message" : messageText.text!, "senderID" : senderIDNumber, "receiverID" : receiverIDNumber], withCompletionBlock: {
(error, ref) in
if error != nil {
return
}
})
}
Я пытаюсь получить receiveIDNumber (пользователь, который получит сообщение) из FeedCollectionViewCell
Для cell.buttonEvents в MainViewController, это открыть ChatViewController.
Модель для Main показана ниже:
class Post{
var caption: String
var photoUrl: String
var price: String
var category: String
var username: String
var pic: String
init(captionText: String, photoUrlString: String, priceText: String, categoryText: String, usernameLabel: String, profileImageURL: String){
caption = captionText
photoUrl = photoUrlString
price = priceText
category = categoryText
username = usernameLabel
pic = profileImageURL
}
Например, в ячейке есть кнопка рядом с userprofileimage, на которую люди могут нажать, чтобы пообщаться с пользователями.Кнопка, он будет направлять их в ChatViewController. В ChatViewController я использовал другую модель:
class Chat {
var message: String
var senderID: String
var receiverID: String
init(messageTextString: String, senderIDNumber: String, receiverIDNumber: String){
message = messageTextString
senderID = senderIDNumber
receiverID = receiverIDNumber
}
Так как receiveIDNumber (receiveUsername) получен из ChatCollectionView, я нахожу затруднения при согласовании его с именем пользователя из Main.