【发布时间】:2021-09-19 11:32:36
【问题描述】:
我正在尝试添加一个 cmets 功能,显然每个帖子都有自己的一组 cmets。为此,我试图将 post.id(来自 PostRow.swift)传递给我的 CommentsViewModel 中的一个函数。但是,由于没有直接调用该函数,我不确定如何执行此操作。例如,在我的其他一些函数中,我所要做的就是将 (id: post.id) 添加到参数:postData.checkForLikes(id: post.id)。然后,在实际功能中,我所要做的就是func checkForLikes(id: String)。
就像我说的,没有什么是直接调用这个函数getComments。代码如下:
PostRow.swift - 显示 cmets 的按钮
showingComments = true
//unsure if an action to update postID should be here?
}){
Text("Comments")
}
.transition(.move(edge: .leading))
.sheet(isPresented: self.$showingComments)
{
CommentsView(post: post)
}
CommentsView.swift - 查看
@StateObject var commentsData = CommentsViewModel()
ScrollView{
VStack(spacing: 15){
ForEach(commentsData.comments){comment in
CommentsRow(post: post, comment: comment, commentData: commentsData)
}
}
.padding()
.padding(.bottom,55)
}
}
CommentsRow.swift - 每条评论的实际格式,仅包括 CommentsRow 引用的知识
struct CommentsRow: View {
var post : PostModel
var comment : CommentsModel
@ObservedObject var commentData : CommentsViewModel
let uid = Auth.auth().currentUser!.uid
var body: some View {
}
CommentsViewModel.swift
class CommentsViewModel : ObservableObject{
@Published var comments : [CommentsModel] = []
@Published var noComments = false
@Published var newComment = false
@Published var commentTxt = ""
let ref = Firestore.firestore()
let uid = Auth.auth().currentUser!.uid
var post: PostModel?
init(post: PostModel? = nil) {
if let post = post {
self.post = post
}
getComments(id: "") //need to pass post.id to this view?
}
func getComments(id: String) {
//code for this function. All I need to really do right now is print the post.id
}
这应该是理解这个问题所需的所有代码。我确信这是一个简单的解决方法,但我已经尝试了四天,但没有运气。
编辑:我选择的答案有效,但是我的 cmets 不再显示,因为 getComments 未初始化。有这个问题的帖子是here
【问题讨论】:
标签: ios xcode firebase swiftui