我有一个tableview,它是导航控制器的一部分,它返回一个问题列表。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for:indexPath) as! AnswerTableViewCell
let data = quesList[indexPath.row]
cell.labelName.text = data.sender_name;
cell.labelQuestion.text = data.text;
return cell
}
func fetchQues(){
Ref.queryOrdered(byChild: currentuser).queryEqual(toValue: nil).observe(DataEventType.value, with:{(snapshot)in
if snapshot.childrenCount>0{
self.quesList.removeAll()
for data in snapshot.children.allObjects as![DataSnapshot]{
let dataObject = data.value as? [String: AnyObject]
let userid = dataObject?["sender_id"];
let username = dataObject?["sender_name"];
let questext = dataObject?["text"];
let questionid = dataObject?["id"];
let data = Question(id: questionid as! String, sender_id: userid as! String, sender_name: username as! String, text: questext as! String)
self.quesList.insert(data, at :0)
}
self.AnswerTable.reloadData()
}
})
}
然后我有一个didselectrow函数来转换到这个导航堆栈的VC部分,让用户输入他们对问题的答案。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let data = quesList[indexPath.row]
questionselect1 = data.text;
questionid1 = data.id;
performSegue(withIdentifier: self.questSegue, sender: nil)
}
在用户提交问题的答案后,它会在问题词典中添加一个字典并返回问题屏幕列表。 queryorder(bychild:currentuser).queryeuqual(tovalue:nil)只返回当前用户未回答的问题。因此,每当用户回答问题时,该问题都将从列表中删除。
@IBAction func submitAnswer(_ sender: Any) {
if questiontext.text != "" {
DBProvider.Instance.postAnswers(senderID: userid, senderName: username2, text: questiontext.text!)
DBProvider.Instance.postAnswered()
self.questiontext.text = "";
self.navigationController!.popViewController(animated: true)
//append data to the current question
} else {
alertTheUser(title: "Please Submit A Valid Answer", message: "Question Field Cannot Be Empty");
}
}
此时此工作正常,但是,当列表中只有一个问题并且用户回答它并返回到问题表视图时,最后一个问题不会从列表中删除,它应该是因为它已被回答。
我一直试图通过更改segueing方法并使用viewwillload或viewdidload重新加载视图来弄清楚为什么会发生这种情况并且它不起作用。
希望有人理解我在说什么,并能为我的错误提供答案。