2016-08-05 1 views
2

Please look at this imageКак получить значения из пользовательского UITableViewCell в ViewController?

У меня есть два UITextFields на UITableViewCell и их IBOutlets соединены в пользовательских UITableViewCell класс, названный как «CustomCell.swift». Кнопка ввода находится в UIView ViewController, а ее IBAction находится в классе UIViewController, называемом «ViewController».

При нажатии кнопки «Ввод» я хочу, чтобы два текстовых поля были пустыми. Как мне это сделать? Пожалуйста, помогите

+0

Могу ли я сделать что-то вроде этого @IBAction func enquireButton (отправитель: AnyObject) { let cell = tableView.dequeueReusableCellWithIdentifier («Детали для гостей») как! GuestDetailsTableViewCell; let fullName1 = cell.fullNameTextField.text !; } –

ответ

0

Вот простое решение. Он будет работать для любого количества ячеек.

Что вам нужно сделать, это перебрать ячейки и выяснить, является ли textField той конкретной ячейкой пустой или нет. Теперь вопрос в том, как вы будете проходить через ячейки, есть ли для этого делегат? Ответ №

Вы должны вручную построить indexPaths, чтобы получить ячейки из таблицы.

Простой ход. Ваша настройка совершенно правильная. У вас должен быть вид таблицы в вашем ViewController. Итак, IBOutlet tableview должен быть там. Я назвал свой TableView «myTableView». И выход TextField должен находиться внутри TableViewCell, который также прав. В конце действия метод действия кнопки Enter должен находиться в контроллере представления.

Убедитесь, что вы правильно соедините все розетки.

Вот пример пользовательского TableViewCell -

import UIKit 

class CustomTableViewCell: UITableViewCell { 

    @IBOutlet weak var internalTextField : UITextField! 

    override func awakeFromNib() { 
     super.awakeFromNib() 
    } 

} 

А теперь просто пойти на ViewController.swift-

import UIKit 

class ViewController: UIViewController, UITableViewDataSource { 

    @IBOutlet weak var myTableView : UITableView! 

    var numberOfCells = 2 //you can update it to be any number 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.myTableView.dataSource! = self //assign the delegate 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return numberOfCells 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell : CustomTableViewCell = tableView.dequeueReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as! CustomTableViewCell 
     return cell; 
    } 

    @IBAction func pressedEnter(){ 

     var row = 0 

     while row < numberOfCells { //iterate through the tableview's cells 

      let indexPath : NSIndexPath = NSIndexPath(forRow: row, inSection: 0) //Create the indexpath to get the cell 
      let cell : CustomTableViewCell = self.myTableView.cellForRowAtIndexPath(indexPath) as! CustomTableViewCell 

      if cell.internalTextField.text!.isEmpty{ 
       print("TextField is Cell \(row) is Empty") 
      } 
      else{ 
       print("TextField is Cell \(row) is NOT Empty") 
      } 
      row += 1 
     } 
    } 
} 

Есть комментарии, которые объясняют все. Надеюсь это поможет.

0

создать переменные Bool в своем классе, где у вас есть действие кнопки

var isTextFieldTextEmpty: Bool! 

затем в табличном просмотре метод DATASOURCE cellForRowAtIndexPath добавить

if myCell.myTextField.text?.isEmpty == true { 
     self.isTextFieldTextEmpty = true 
    } else { 
     self.isTextFieldTextEmpty = false 
    } 

затем в IBAction из ваших (Enter) добавить

self.myTableView.reloadData() 
self.myTableView.layoutIfNeeded() 
print(self.isTextFieldTextEmpty) 

если все текстовые поля во всех ячейках o f в виде таблицы есть текст, он будет печатать false, иначе если только одно текстовое поле среди всех текстовых полей не имеет текста, оно будет печатать true

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