【发布时间】:2019-06-14 01:29:03
【问题描述】:
我创建了一个应用程序,用户可以在其中生成添加到 postTableView 的帖子。然后,用户可以单击 postTableView 的任何单元格以转到具有帖子标题和文本的独特视图,以及填充用户生成的 cmets 的 commentTableView。在commentTableView 下方是一个textView,您可以在其中写下您的评论和一个允许您提交评论的按钮。我正在尝试编写我的应用程序,以便当您按下按钮时,您在 textView 中编写的文本会附加到该帖子的唯一 cmets 数组中。这些 cmets 填充了 commentTableView。以下是我目前有缺陷的尝试:
这是帖子类:
import Foundation
class Post {
var id:String
var title: String
var text:String
var createdAt:Date
var comment: [String] = []
init(id: String, title: String,text:String, timestamp:Double, comment: [String] = []) {
self.id = id
self.title = title
self.text = text
self.createdAt = Date(timeIntervalSince1970: timestamp / 1000)
}
static func parse(_ key:String, data:[String:Any]) -> Post? {
if let title = data["text"] as? String,
let text = data["title"] as? String,
let timestamp = data["timestamp"] as? Double {
return Post(id: key, title: title, text: text, timestamp:timestamp, comment: [])
}
return nil
}
}
这是当您单击 postTableView 中的任何单元格时获得的当前视图控制器:
import Foundation
import UIKit
import Firebase
class MainTextView: UIViewController {
@IBOutlet weak var titleText: UILabel!
@IBOutlet weak var mainText: UILabel!
@IBOutlet weak var commentPlaceHolder: UILabel!
@IBOutlet weak var newCommentLabel: UITextView!
var delegate:NewPostVCDelegate?
@IBAction func postReplyButton() {
// Firebase code here
let postRef = Database.database().reference().child("posts").childByAutoId()
let postObject = [
"comment": newCommentLabel.text,
"timestamp": [".sv": "timestamp"]
] as [String : Any]
postRef.setValue(postObject, withCompletionBlock: { error, ref in
if error == nil {
self.delegate!.didUploadPost(withID: ref.key!)
self.dismiss(animated: true, completion: nil)
} else {
// Handle error
}
})
newCommentLabel.text = String()
commentPlaceHolder.isHidden = false
}
var post: Post?
// MARK: - View Controller LifeCycle
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.setMain()
}
覆盖 func viewDidLoad() { super.viewDidLoad()
newCommentLabel.delegate = self as! UITextViewDelegate
}
private func setMain() {
guard let post = self.post else {
return
}
titleText.text = post.text
mainText.text = post.title
}
func textViewDidChange(_commentView: UITextView) {
commentPlaceHolder.isHidden = !newCommentLabel.text.isEmpty
}
}
如何修复我的错误并以编程方式执行我的愿景,即为每个帖子在评论部分填充用户?
【问题讨论】: