移动到自定义UItableViewCell中的下一个UItextfield(具有多个部分的Tableview)

时间:2018-04-02 09:50:34

标签: ios swift uitableview swift3 swift4

我有UItableView个自定义UItableViewCell。每个单元格中都有UItextField个。现在我希望用户能够通过点击键盘上的下一个按钮移动到下一个文本字段。 我已经知道我们可以在 cellForRowAtIndexPath

中执行以下操作
cell.textField.tag =  indexPath.row

然后转移到下一个字段

if let nextField = self.view.viewWithTag(textField.tag + 1) as? UITextView {
            nextField.becomeFirstResponder()
        } else {
            textField.resignFirstResponder()
        }

但在我的情况下,我在UItableview 中有多个部分,所以这个

  

cell.textField.tag = indexPath.row

没有工作。任何线索?提前谢谢。

2 个答案:

答案 0 :(得分:0)

你也可以这样做  1)将textfield的标签作为section&的组合。行

  textfield.tag = indexPath.section*1000 + indexPath.row

并使用打击代码获取它:

let Row = textfield.tag % 1000
let Section = (textfield.tag - Row)/1000 

或  2)您可以获取文本字段所在的TableView单元格的节和行值,在任何textfield的委托方法中使用以下代码:

let item:UITableViewCell = textField.superview?.superview as! UITableViewCell

 let indexPath = table_view.indexPath(for: item)

 print(" Section :\(indexPath?.section)")
 print(" Row :\(indexPath?.row)")

检查部分&行值,然后设置textfield的becomeFirstResponder,条件要求(根据你的节和行数)

答案 1 :(得分:0)

感谢所有人的回答我的错误我无法理解我通过稍微调整我的数据源来做到这一点

  func getBaseValueCount(currentSection:Int) -> Int {
    var count = 0
    if currentSection == 0 {
        return count
    }
    else{
        for i in 0..<currentSection {
            count = count + (self.formSections[i].fields?.count)!
        }
    }

    return count
}

然后在cellForRowAtIndexPath

 cell.txtAnswer.tag = self.getBaseValueCount(currentSection: indexPath.section) + indexPath.row

再次感谢。