更新tableview中的单元格也会更新另一个单元格

时间:2017-02-12 15:29:09

标签: ios swift uitableview delegates

我在一个场景中有点困惑,我认为我的逻辑错误请帮助我解决它,我真的很困惑。 情景就是

  1. 表格中有问题。

  2. 每个问题都有答案,第一个是,第二个是,第三个是不适用

  3. 默认选择
  4. 如果用户点击并且不适用用户界面没有变化,但如果用户点击否< / strong>有文本字段显示用户应该在哪个用户描述的原因。
  5. 现在这些事情都会发生但是当用户点击文本字段显示“否”时会出现问题,但是当用户向下滚动时,另一个单元格显示文本字段,并且在该单元格上也选择“否”,用户未选择“否”。我认为它的索引或我的逻辑问题请帮助,我使用委托模式进行按钮事件。

    请参阅下面的附件

    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()
    
        } }
    

3 个答案:

答案 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();