Как получить документ почтового ящика в быстром магазине iOS? - PullRequest
0 голосов
/ 20 сентября 2019

Ниже приведен код, над которым я работаю, есть список таблиц и ячеек таблиц для списка комментариев. Как получить идентификатор документа ячейки из хранилища, когда я нажимаю на кнопку в ячейке.Он не показывает ошибку, но не работает должным образом, в основном при нажатии я хочу получить и Id комментария, и Id поста, Id поста извлекается, но commentId для каждого комментария одинаково, что должно быть разницей для каждого комментария.

Я получаю это сообщение об ошибке «NSInvalidArgumentException, причина:» - [UITableViewCellContentView addTarget: action: forControlEvents:]: нераспознанный селектор, отправленный экземпляру 0x7fc1a1659400 '».

class CommentListViewController: UITableViewController {
    var comments = [Comment]()
    var postCommentList:Post?
    var postId:String = ""
    var commentKey:String = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationController?.navigationBar.isTranslucent = false
        getComments()
    }

    func getComments() {
        let commentsRef = Firestore.firestore().collection("posts").document(postId).collection("comments")
        commentsRef.getDocuments { (snapshot, error) in
            if let error = error {
                print(error.localizedDescription)

            } else {
                if let snapshot = snapshot {
                    for document in snapshot.documents {
                        let data = document.data()
                        let username = data["comment_author_username"] as? String ?? ""
                        let comment = data["comment_author_comment"] as? String ?? ""
                        let spinnerC = data["comment_author_spinnerC"] as? String ?? ""
                        let fullname = data["comment_author_fullname"] as? String ?? ""
                        let email = data["comment_author_email"] as? String ?? ""
                        let commentUserImageUrl = data["comment_user_image"] as? String ?? ""
                        let newComment = Comment(_documentId: document.documentID, _commentAuthorUsername: username, _commentAuthorFullName: fullname, _commentAuthorComment: comment, _commentUserImage: commentUserImageUrl, _commentAuthorSpinnerC: spinnerC)
                        self.comments.append(newComment)

                    }
                    self.tableView.reloadData()
                }
            }
        }
    }

    @IBAction func toAddCommentsSection(_ sender: Any) {
        performSegue(withIdentifier: "toPostComment", sender: self)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let vc = segue.destination as! CommentPostViewController
        vc.postId2 = postId
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return comments.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CommentCell", for: indexPath) as! CommentCell
        cell.likebutton.tag = indexPath.row
        cell.likebutton.addTarget(self, action: #selector(likeaction1(_:)), for: .touchUpInside)
        cell.set(comment: comments[indexPath.row])

        return cell
    }

    @IBAction func likeaction1(_ sender: AnyObject) {
        let commentbutton = sender as! UIButton
        let comment = comments[commentbutton.tag]
        commentKey = comment._documentId // or what key value it is
        print(postId + "   hello1  " + commentKey)
    }
}

1 Ответ

0 голосов
/ 20 сентября 2019

Попробуйте и дайте мне знать, работает или нет.Сделайте кнопку вот так

class CommentCell: UITableViewCell {

@IBOutlet weak var likeButton: UIButton!

var likeButtonPressed : (() -> ()) = {}


override func awakeFromNib() {
    super.awakeFromNib()
}


@IBAction func likeButtonTapped(_ sender: UIButton) {

    likeButtonPressed()
}


}

И внутри UITableView cellForRowAt метод

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CommentCell", for: indexPath) as! CommentCell

cell.likeButtonPressed = {
    commentKey = comments._documentId[indexPath.row]

}

return cell


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