tableView单元格中的TextField不向控制台输出文本

时间:2018-08-21 19:33:30

标签: ios swift xcode uitableview textfield

我创建了一个带有两个不同标签和一个文本字段的tableView。根据在其中选择的indexPath,标签将根据数组显示不同的文本。我创建了一个CocoTouch类文件,并使其类型为TableViewCell。

TableViewCell.swift

import UIKit
class Driver_Navigation_TableViewCell: UITableViewCell {
    @IBOutlet weak var orderTextField: UITextField!
    @IBOutlet weak var adressLabel: UILabel!
    @IBOutlet weak var nameLabel: UILabel!



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


    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        // Configure the view for the selected state
    }
}

ViewController.swift

    class ViewController: UIViewController, MGLMapViewDelegate, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {

        var allCellsText = [String]()

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    array.count
        }
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! Driver_Navigation_TableViewCell

        cell.adressLabel.text = passengersAdress[indexPath.row]
        cell.nameLabel.text = passengersName[indexPath.row]
        cell.orderTextField.placeholder = "\(indexPath.row + 1)."
        return(cell)
    }
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath as IndexPath) as! Driver_Navigation_TableViewCell

cell.orderTextField.tag = indexPath.row

cell.orderTextField.delegate = self // theField is your IBOutlet UITextfield in your custom cell

return cell
}
func textFieldDidEndEditing(textField: UITextField) {
    allCellsText.append(textField.text!)
    print(allCellsText)
}
    }

1 个答案:

答案 0 :(得分:0)

您不能重复 UITableViewDataSourceUITableViewDelegate methods,它不能那样工作。

在您的代码中,您还没有在两个cellForRowAtIndexPath()方法中都设置了textField的委托。

如果要在单个控制器中具有两个表视图,请尝试以下操作

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return array.count   
  }
  func tableView(_ tableView: UITableView, cellForRowAtIndexPath: IndexPath) -> UITableViewCell {

     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! Driver_Navigation_TableViewCell

      if tableView == self.tableView1 {
        cell.adressLabel.text = passengersAdress[indexPath.row]
        cell.nameLabel.text = passengersName[indexPath.row]
        cell.orderTextField.placeholder = "\(indexPath.row + 1)."
       }
      else {
        cell.orderTextField.tag = indexPath.row

       }
        cell.orderTextField.delegate = self 

        return(cell)
    }

为“表格视图”创建出口