Сбор данных из элементов пользовательского интерфейса внутри UITableViewCell

Я строю форму с использованием a UITableViewс множеством различных типов UITableViewCells эти клетки могут иметьUITextView,UISwitch,UISlider,UITextField, и т.д.

I need to have gathered all the user input into a Dictionaryso I can send the user input back to the server.

Будет ли лучшим способом сбора данных является установка делегатов всех элементов пользовательского интерфейса на контроллер?

Так ДляUITextView, в

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

sampleTextView.delegate = self
sampleTextView.tag = [tagNumber]

А затем получение текста и добавление / обновление словаря в- textViewDidEndEditing:

Примечание-кроме того, формы строятся динамически и могут меняться.

1 ответ

  1. в вашем UIViewController

    var formInfo:NSMutableDictionary = [:]
    

    в методе cellForRowAtIndexPath задайте indexPath в качестве тега

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    
          //... config cell
    
          cell.sampleTextView.delegate = self
          cell.sampleTextView.tag = indexPath.row
    
          //because you are use UITableView in dynamic mode textView will lost text in scrolling , 
          if formInfo.objectForKey(textview.tag) != nil {
               cell.sampleTextView.text = formInfo.objectForKey(textview.tag) as? String
          }
    
        }
    

    и в делегате textView :

    func textViewDidChange(textView: UITextView) {
    
            formInfo.setObject(textView.text, forKey: textView.tag)
    
        }