2017-06-16 6 views
0

Ich habe 2 Abschnitte mit jeweils 16 Zeilen, und wie Sie alle Textfield-Wert in der Tabellenansicht Zelle erhalten? Ich möchte es speichern, wenn ich auf Speichern klicke.Textfeld in der Tabellenansichtszelle abrufen, wenn Sie auf die Schaltfläche Speichern tippen und im Wörterbuch speichern?

und ich retrive bereits simulieren Daten aus Firebase-Datenbank in String: AnyObject, und zeigen Sie es in der Tabellenansicht.

Wie bekomme ich einen Wert wie textfield oder switch in tableviewCell?

import UIKit 
import Firebase 
import FirebaseDatabaseUI 



class SettingLabelTableViewController: UITableViewController, UITextFieldDelegate { 

    var BitArray:[String] = ["M0","M1","M2","M3","M4","M5","M6","M0","M8" 
     ,"M9","M10","M11","M12","M13","M14","M15"] 
    var WordArray:[String] = ["D0","D1","D2","D3","D4","D5","D6","D0","D8" 
     ,"D9","D10","D11","D12","D13","D14","D15"] 
    var DeviceKey:String? 
    var Ref: FIRDatabaseReference! 
    var dict = [String:AnyObject]() 
    var allCellsText = [String]() 
    @IBAction func SaveButton(_ sender: UIBarButtonItem) 
    { 


     /*self.Ref.setValue(dict, withCompletionBlock: 
     { (error, dbref) in 

     })*/ 
    } 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     Ref = device.child("DEVICE").child(DeviceKey!).child("SETTINGS").child("LABEL") 
    } 


    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(true) 
     Ref.observeSingleEvent(of: .value, with: { (snapshot) in 
      if !snapshot.exists(){ 
       print("not exist") 
       csGolbal.g_NameAry.removeAll() 
       self.dict.removeAll() 
      } 
      else{ 
       self.dict.removeAll() 
       self.dict = (snapshot.value as? [String: AnyObject])! 


       /*for item in snapshot.value as! [String : String]{ 
        csGolbal.g_NameAry.append([item.key:item.value]) 
       }*/ 
      } 
      self.tableView.reloadData() 
     }) 
    } 


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

    override func numberOfSections(in tableView: UITableView) -> Int 
    { 
     return 2 
    } 

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     // #warning Incomplete implementation, return the number of rows 
     if section == 0 
     { 
      return BitArray.count 
     } 
     else 
     { 
      return WordArray.count 
     } 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "LabelNameCell", for: indexPath) as! LabelNameTableViewCell 

     cell.LabelTitle.text = BitArray[indexPath.row] 
     if dict.count > 0{ 
      cell.txtName.text = dict["M"+String(indexPath.row)] as? String ?? "null" 

     } 
    return cell 
    } 

mein tableviewCell

class LabelNameTableViewCell: UITableViewCell 
{ 
    @IBOutlet weak var LabelTitle: UILabel! 
    @IBOutlet weak var txtName: UITextField! 

    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 
    } 

} 

Antwort

0

Sie können

@IBAction func saveButton(_ sender: UIBarButtonItem) { 
     var dict: [String:String] = [:] 
     for (i,bit) in bitArray.enumarate() { 
      let cell = tableView.cellForRow(at: IndexPath(row: i, section: 0)) as! LabelNameTableViewCell 
      dict[bit] = cell.txtName.text 
     } 
     for (i,word) in wordArray.enumarate() { 
      let cell = tableView.cellForRow(at: IndexPath(row: i, section: 1)) as! LabelNameTableViewCell 
      dict[word] = cell.txtName.text 
     } 
     // dict ---- "M0": "some text" ... 
     //then store it 
    } 

P. S. wie diese Somthing tun In schnellen Variablen und Funktion muss mit Kleinbuchstaben beginnen, siehe Apple Standard-Bibliothek Funktionen.

+0

Ich werde es versuchen, thx – benjamin

+0

ist dies in der dynamischen Zelle verwendet werden kann? Konsole sagte: unerwartet gefunden Null beim Entpacken ein optionaler Wert – benjamin

+0

Entschuldigung für die späte Antwort, es scheint, Sie müssen Zelle casten, ich bearbeitete Antwort –

Verwandte Themen