2017-02-16 57 views
0

我有一個tableview與單元格,當選定的單元格顯示在選定的單元格內的圖像時,該圖像然後消失,當單元格被選中,等等。當我按下一個提交按鈕時,所選的單元格會被記住,並且tableview會用新的數據重新加載。但是,當執行此操作時,所有新數據都會加載,但所選單元格圖像仍然存在。我曾嘗試在主隊列上調用tableView.reloadData(),但它仍然存在。當我多次按下提交按鈕時,圖像仍然存在。tableview繼續重新加載後的細胞圖像

繼承人我的代碼:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return currentQuestion.answers.count 
} 

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    return tableView.frame.height/CGFloat(currentQuestion.answers.count) 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    setSelectedArray() 
    let cell: AnswersTableViewCell = tableView.dequeueReusableCell(withIdentifier: "answersTableViewCell") as! AnswersTableViewCell 

    let text = currentQuestion.answers[indexPath.row] 
    let isAnAnswer = currentQuestion.answerKeys[indexPath.row] 

    cell.answerTextLabel.text = text 
    cell.answerView.backgroundColor = UIColor.white.withAlphaComponent(0.5) 
    cell.contentView.sendSubview(toBack: cell.answerView) 

    return cell 
} 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    if let cell: AnswersTableViewCell = tableView.cellForRow(at: indexPath) as? AnswersTableViewCell { 

     if cell.answerImageView.image == nil { 

      cell.answerImageView.image = UIImage(named: "paw.png") 
      selected[indexPath.row] = true 

     } else { 

      cell.answerImageView.image = nil 
      selected[indexPath.row] = false 

     } 
    } 
} 

@IBAction func submitButtonWasPressed() { 

    if questionNumber < questions.count - 1 { 

     questionNumber += 1 
     setCurrentQuestion() 
     self.answersTableView.reloadData() 
     self.view.setNeedsDisplay() 
    } 
} 

任何幫助將是巨大的。謝謝

回答

2

您需要將圖像設置回cellForRow的正確值。您的表格中的單元格在調用reloadData之間重複使用,並且由於您未觸摸imageView,因此它保持其以前的值。看起來像你想要的:

cell.answerImageView.image = selected[indexPath.row] ? UIImage(named: "paw.png") : nil 

tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)裏面。

+0

太棒了,我嘗試了類似的東西,但失敗了。謝謝! – Wazza