私は、親クラスCreateEventから継承するサブクラスCustomCellを持っています。サブクラスは、CreateEvent Viewコントローラにあるテーブルビューセルの個々のセルを記述します。ある特定のセルでは、CustomCellファイルにリンクされているテキストフィールドがありますが、ユーザーがテキストフィールドに入ると、そのテキストフィールドから値を取得するのに問題があります。私はまた、外のタッチとリターンキーを押すと、キーボードを却下する問題がありますが、私は主にテキストフィールドからテキストを取得に焦点を当てています。私はこれらの機能を1つの通常のスウィフトファイルで行うことに精通していますが、これはサブクラスと2つのすばやいファイルなので、何をすべきかわかりません。これは私のコードです:CustomCellファイルを使用してテキストフィールド値を取得する
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;
}
}
私はentranceFeeTextFieldの値をプリントアウトすることができませんので、私の主な質問は、私は適切にUITextFieldの代表者に準拠していますかどうかです。私は私の問題を解決する答えを得ることができなかった、または私が理解できる問題を解決することができなかった。
直接あなたはyou'r現在のビューコントローラ内のデリゲートメソッドを使用するcellForRowAtで現在のビューコントローラにUITextFieldのためのデリゲートを設定する必要が –
textFieldShouldEndEditing方法で「entranceFeeAmount = textField.text」を書くことができます。 –
@yagneshdobariya IBOutletをCreateEventVCに設定していないため、コード行がentranceFeeTextFieldを認識できないため、私はそれを行うことができません。私はそれをCustomCellファイルにリンクさせました – Kevin