Swift访问另一个tableviewcell的一个tableviewcell中的文本字段值

时间:2016-12-29 11:02:46

标签: ios swift uitableview

我不确定这是否是一个奇怪的设置,但我有两个自定义的tableView单元格 -

  1. PhoneCell
  2. EmailCell
  3. 在PhoneCell中,我有两个文本字段,其中包含一些textFields中的值。在EmailCell中,我有一个textField。

    我现在需要在我的EmailCell中访问PhoneCell中可用的那两个textField的值。而且,这个PhoneCell可以添加四次,即我可以添加四个电话号码

    是否有可能,我该如何实现?

    最终,我想在下面做 -

    1. 获取PhoneCell中的textField值(最多4个数字)到EmailCell
    2. 对于EmailCell(saveContactDataClicked)中的按钮操作,我需要使用phoneCell文本字段数据和emailCell textField数据作为POST请求进行服务调用。
    3. PhoneCell

      class PhoneCell: ProfileCell {
      
          @IBOutlet weak var countryCode: UITextField!
      
          @IBOutlet weak var addPhoneButton: UIButton!
          @IBOutlet weak var teleNumber: UITextField! 
      
      override func configure(withUser user: UserData, language: String, indexPath: NSIndexPath) {
          super.configure(withUser: user, language: language, indexPath: indexPath)
      
          if user.phones?.count == 0 {
              self.countryCode.text = ""
              self.teleNumber.text = ""
          }
      
          else {
              if let userPhoneInfo = user.phones {
      
                  self.countryCode.text = userPhoneInfo[indexPath.row].country
                  self.teleNumber.text = userPhoneInfo[indexPath.row].number
      
              }
          }
      }
      
      
      }
      

      我是从 EmailCell 尝试这样的,但无法在phoneCell中获取textField值

      class EmailCell: ProfileCell {
      
          @IBOutlet weak var saveButton: UIButton!
          @IBOutlet weak var emailLabel: UILabel!
      
          @IBOutlet weak var emailText: UITextField!
      
          @IBOutlet weak var cautionLabel: UILabel!        
      
          @IBOutlet weak var cautionTextView: UITextView!       
      
          @IBAction func saveContactDataClicked(sender: AnyObject) {
      
              let phoneCell = PhoneCell()
      
              let phoneCode = phoneCell.countryCode.text
              let phoneNumber = phoneCell.teleNumber.text
      
              let data = ContactInfoData(phoneCode: phoneCode!,
                                         phoneNumber: phoneNumber!,
                                         emailAddress: emailText.text!)
      
              delegate?.saveEdits(forContactInfoCell: self, withData: data)
          }
      
          override func configure(withUser user: UserData, language: String, indexPath: NSIndexPath) {
              super.configure(withUser: user, language: language, indexPath: indexPath)
      
              emailText.text = user.email
      
          }
      

2 个答案:

答案 0 :(得分:1)

首先,您应该在emailCell中声明phoneViewController,然后您可以在phoneViewContrller中访问其值。您不应该在customCell课程中执行这些操作。这是为了不控制事物。

phoneViewController制作cellForRowAt indexPath个函数并声明2个单元格:

let phoneCell: phoneCell = tableView.dequeueReusableCell(withIdentifier: "phoneCell") as! PhoneCell
let emailCell: emailCell = tableView.dequeueReusableCell(withIdentifier: "emailCell") as! EmailCell

现在您可以像这样访问textField值:

let phoneCode = emailCell.countryCode.text
let phoneNumber = emailCell.teleNumber.text

你也可以颠倒过来。我希望你明白这一点。

答案 1 :(得分:0)

您也可以通过为每个文本字段分配标记来获取textyfield的值。

如果让txtField1 = self.view.viewWithTag(someTag)为? UITextField {

    print(txtField1.text!)

}