2016-12-29 5 views
2

Я не уверен, если это странное установка, но у меня есть два пользовательских Tableview клетки -Swift доступа в одном tableviewcell из другого tableviewcell

  1. PhoneCell
  2. EmailCell

В PhoneCell , У меня есть два текстовых поля с некоторыми значениями в этих текстовых полях. В EmailCell у меня есть один textField.

Мне нужно получить доступ к значениям этих двух текстовых полей, доступных в PhoneCell, в моем EmailCell сейчас. И этот PhoneCell можно добавить четыре раза, то есть я могу добавить четыре телефонных номера

Возможно ли, как это реализовать?

В конечном счете, я пытаюсь сделать ниже -

  1. значения Get TextField в PhoneCell (максимум 4 цифры) для EmailCell
  2. К действию кнопки в EmailCell (saveContactDataClicked), мне нужно сделать вызов службы с данными текстового поля phoneCell и emailCell textField данные вместе как запрос POST.

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, но не может получить значения TextField в phoneCell

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 

    } 
+0

Вы должны объявить emailCell в phoneViewController, а затем вы можете получить доступ к его стоимости в phoneViewContrller. Вы не должны выполнять эти действия в классе customCell. Это не для того, чтобы контролировать вещи. –

+0

@ TarvoMäesepp: Хорошо, вы имеете в виду, я должен реализовать saveButtonAction из моего ViewController, а не из ячейки? –

+0

Какой элемент управления представлением этих элементов принадлежит?Вы должны работать с данными, а не с видом – Tj3n

ответ

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 

Вы можете сделать это с ног на голову также. Надеюсь, вы поняли.

+0

Да, это уже реализовано в моем ViewController. Но я просто пытался понять, могу ли я заставить его работать из моей ячейки напрямую. Это для меня теперь обучение, и я лучше сделаю это в своем ViewController, а не в камере. –

+0

Ох .. Хорошо, тогда это хорошо. Если вы хотите узнать больше, вы должны обратиться в Google о Model View Controller. Это принцип, которому вы должны следовать. Однако, если я понимаю вас правильно, теперь вы можете получить доступ к значению textField по своему усмотрению? –

+0

Да, теперь у меня есть доступ к значениям textField. Но сейчас я застрял в другом вопросе. : | Может быть, я должен опубликовать его как новый вопрос в SO –

0

Вы можете получить значения textyfield, назначив также тег для каждого текстового поля.

если let txtField1 = self.view.viewWithTag (someTag) как? UITextField {

print(txtField1.text!) 

}

Смежные вопросы