我在一个场景中有点困惑,我认为我的逻辑错误请帮助我解决它,我真的很困惑。 情景就是:
表格中有问题。
每个问题都有答案,第一个是是,第二个是否,第三个是不适用。
现在这些事情都会发生但是当用户点击文本字段显示“否”时会出现问题,但是当用户向下滚动时,另一个单元格显示文本字段,并且在该单元格上也选择“否”,用户未选择“否”。我认为它的索引或我的逻辑问题请帮助,我使用委托模式进行按钮事件。
请参阅下面的附件
When User Select NO in Question No. 0
And Scroll Down than Question No. 6 is also shown as NO
希望任何人帮助我,提前致谢
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "FormCell", for: indexPath) as! FormCell
cell.questionLbl.text = "Question No \(indexPath.row): What is Your Name"
cell.index = indexPath as NSIndexPath?
cell.delegate = self
cell.tag = indexPath.row
return cell
}
func yesBtnPressedAt(indexPath: NSIndexPath) {
print("YES")
let cell = self.tableView.cellForRow(at: indexPath as IndexPath) as! FormCell
if(cell.tag == indexPath.row){
self.tableView.beginUpdates()
cell.yesBtn.backgroundColor = ColorUtilities.selectedAnswerColor
cell.noBtn.backgroundColor = ColorUtilities.unSelectedAnswerColor
cell.notApplicableBtn.backgroundColor = ColorUtilities.unSelectedAnswerColor
cell.resonTextFiled.isHidden = true
cell.goToTeamBtn.isHidden = true
cell.heightForMaineView.constant = 89.0
cell.heightForTextField.constant = 0.0
self.tableView.endUpdates()
}
}
func noBtnPressedAt(indexPath: NSIndexPath) {
print("NO")
let cell = self.tableView.cellForRow(at: indexPath as IndexPath) as! FormCell
if(cell.tag == indexPath.row){
self.tableView.beginUpdates()
cell.yesBtn.backgroundColor = ColorUtilities.unSelectedAnswerColor
cell.noBtn.backgroundColor = ColorUtilities.selectedAnswerColor
cell.notApplicableBtn.backgroundColor = ColorUtilities.unSelectedAnswerColor
cell.resonTextFiled.isHidden = false
cell.goToTeamBtn.isHidden = false
cell.heightForMaineView.constant = 129.0
cell.heightForTextField.constant = 30.0
self.tableView.endUpdates()
}
}
func notApplicableBtnPressedAt(indexPath: NSIndexPath) {
print("Not Applicable")
let cell = self.tableView.cellForRow(at: indexPath as IndexPath) as! FormCell
if(cell.tag == indexPath.row){
self.tableView.beginUpdates()
cell.yesBtn.backgroundColor = ColorUtilities.unSelectedAnswerColor
cell.noBtn.backgroundColor = ColorUtilities.unSelectedAnswerColor
cell.notApplicableBtn.backgroundColor = ColorUtilities.selectedAnswerColor
cell.resonTextFiled.isHidden = true
cell.goToTeamBtn.isHidden = true
cell.heightForMaineView.constant = 89.0
cell.heightForTextField.constant = 0.0
self.tableView.endUpdates()
} }
答案 0 :(得分:1)
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@["your indexPath"] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
很好的工作
答案 1 :(得分:0)
它是关于tableview中可重用单元格机制的全部内容,更多信息需要包含在
中的一些代码func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell
答案 2 :(得分:0)
如果木星的回答是你要找的......这是一个Swift版本
self.tableView.beginUpdates();
self.tableView reloadRows(atIndexPath: "your indexPath", withRowAnimation: .none);
self.tableView.endUpdates();