使用CustomCell文件拉取文本字段值

时间:2016-10-13 03:50:44

标签: ios swift uitableview textfield

我有一个子类CustomCell,它继承自我的父类CreateEvent。子类描述了表视图单元的各个单元格,它位于CreateEvent视图控制器上。在一个特定的单元格中,我有一个文本字段,它链接到CustomCell文件,但是当用户进入文本字段时,我无法从该文本字段中获取值。我也无法通过外部触摸解除键盘并按下返回键,但我主要专注于从文本字段中获取文本。我熟悉在一个普通swift文件上做这些功能,但因为这是一个子类和两个swift文件,我不知道该怎么做。这是我的代码:

class CustomCell: UITableViewCell, UITextFieldDelegate {

@IBOutlet weak var entranceFeeTextField: UITextField!

override func awakeFromNib() {
     super.awakeFromNib()

}

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

class CreateEventVC: UIViewController, UITableViewDelegate, UITableViewDataSource, CustomCellDelegate, UITextFieldDelegate {

override func viewDidLoad() {
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let currentCellDescriptor = getCellDescriptorForIndexPath(indexPath)
    let cell = tableView.dequeueReusableCell(withIdentifier: currentCellDescriptor["cellIdentifier"] as! String, for: indexPath) as! CustomCell

// the following code describes the array for an expandable drop down 
if currentCellDescriptor["cellIdentifier"] as! String == "idCellNormal" {
    if let primaryTitle = currentCellDescriptor["primaryTitle"] {
        cell.textLabel?.text = primaryTitle as? String
    }

    eventType = ((cellDescriptors[0] as! NSMutableArray)[0] as! NSDictionary)["primaryTitle"]! as! String
    if let secondaryTitle = currentCellDescriptor["secondaryTitle"] {
        cell.detailTextLabel?.text = secondaryTitle as? String
    }
}
else if currentCellDescriptor["cellIdentifier"] as! String == "idCellTextfield" {
    cell.textField.placeholder = currentCellDescriptor["primaryTitle"] as? String
}


else if currentCellDescriptor["cellIdentifier"] as! String == "idCellValuePicker" {
    cell.textLabel?.text = currentCellDescriptor["primaryTitle"] as? String
}

cell.delegate = self

return cell
}


func textFieldShouldEndEditing(textField:UITextField) -> Bool {
entranceFeeAmount = cell.entranceFeeTextField.text!

return true;
}

}

我的主要问题是我是否正确地符合UITextField委托,因为我无法打印出entryFeeTextField的值。我无法得到解决问题的答案,或者我能理解的答案。

2 个答案:

答案 0 :(得分:0)

只需将委托分配到其类为CustomCell

的单元格内的文本字段
cell.entranceFeeTextField.delegate = self

但请确保cell具有正确的标识符和正确的类

答案 1 :(得分:0)

您需要在文本字段中添加选择器方法,如下所示。

txtEntrance.addTarget(self, action:#selector(textFieldEndEditings(sender:)), for:.editingDidEnd)

func textFieldEndEditings(sender:UITextField) -> Void 
{
   print(sender.text)
}