在UITableViewController中引用单元格中的文本字段

时间:2017-06-17 08:35:47

标签: swift uitableview

我在Xcode 8中创建了一个包含五个单元格的tableview。每个单元格都有自己的标签和文本字段。我希望能够在单独的tableViewController文件/类中访问这些文本字段中的用户输入,然后使用用户输入执行操作。

我为每个单元格创建了一个swift文件/类。 我已将每个课程公之于众。 而且,在为每个文本字段创建IBOutlet时,我已经使它们符合以下格式:

public class NameCell: UITableviewCell {

@IBOutlet public weak var NameTextField!

override public func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

override public func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}

我认为我需要做的是在viewcontroller类中为每个类中的textfields声明一个变量。我想知道这是否可以做到?如果是这样,我如何从另一个类声明变量/文本字段?或者有更好的方法吗?

我正在思考以下几点:

var NameTextField.NameCell = ""

或者

var NameCell.NameTextField = ""

但这些显然是错误的。我还将textfield委托放在TableViewController类而不是NameCell类中。我不知道这是否有助于解决这个问题。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

确保正确声明您的IBOutlet变量。它应该是:

@IBOutlet weak var textField: NameTextField!

现在,要从单元格textField访问文本,首先需要访问单元格本身。您可以致电var cell = tableView.cellForRow(at: indexPath) as! NameCell,其中indexPath是您尝试访问的单元格的cell.textField.text。然后,您可以致电textField。这将为您提供用户输入到给定单元格的{{1}}的文本。

另外,请务必阅读swift basics以了解变量的正确用法和类型注释,以及正确的命名约定。