从Firebase提取数据并使用文本字段进行预览和更新

时间:2019-07-02 12:35:36

标签: swift firebase tableview textfield

我想使用一个ViewController的相同对象保存到Firebase中,并在必要时用于获取保存的数据以进行预览和更新。

This image to show how it look likes.

最初,我在静态单元格中使用了文本字段,但效果很好,但是无法在动态单元格中的文本字段中插入文本。 当我在控制台中为文本字段调用打印功能时,它会打印出正确的值,但在模拟器的屏幕上什么也不会显示。我什至尝试使用简单的海峡文本字符串将其放入文本字​​段,但未成功。

这是TextMessageViewController中的相关代码,我用于通过动态表格单元格中的文本字段将数据发送到Firebase

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: TextInputTableViewCell = receiverEmailTableView.dequeueReusableCell(withIdentifier: "ReceiverEmail") as! TextInputTableViewCell!
cell.recepientEmailTF.delegate = self
cell.recepientEmailTF.tag = indexPath.row
return cell
}
 func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason) {

if MyGlobalVariables.emails.count <= 3 {
    print("tag master = \(textField.tag)")
    switch textField.tag {
    case 0:
        if MyGlobalVariables.emails.endIndex == 0 {
            MyGlobalVariables.emails.append(textField.text!)
        }
        MyGlobalVariables.emails[0] = textField.text!
    case 1:
        if MyGlobalVariables.emails.endIndex == 1 {
            MyGlobalVariables.emails.append(textField.text!)
        }
        MyGlobalVariables.emails[1] = textField.text!
    case 2:
        if MyGlobalVariables.emails.endIndex == 2 {
            MyGlobalVariables.emails.append(textField.text!)
        }
        MyGlobalVariables.emails[2] = textField.text!
    default:
        print("exceeded")
    }
    DispatchQueue.main.async {
        self.receiverEmailTableView.reloadData()
    }
} else {
    print("exceeded emails limit, add alert")
}
}

我想从中获取Firebase数据并将其添加到texfields的TextPreviewViewController中的代码部分。该视图控制器已连接到情节提要中的预览视图控制器

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let edit = UITableViewRowAction(style: .default, title: "Edit") { (action, indexPath) in

    let newMessageVC = self.storyboard?.instantiateViewController(withIdentifier: "TextMessage") as? TextMessageViewController

    newMessageVC?.modalPresentationStyle = .overCurrentContext
    self.present(newMessageVC!, animated: true, completion: {
        let updateButton = newMessageVC?.saveOrUpdateButton
        updateButton?.titleLabel?.text = "Update"
        let messageBody = newMessageVC?.messageTV
        let dateField = newMessageVC?.tergetDateTF

        let action = MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!)

        // CONCERN POINT: from here->           
        let cell1: TextInputTableViewCell = newMessageVC?.receiverEmailTableView.dequeueReusableCell(withIdentifier: "ReceiverEmail") as! TextInputTableViewCell!
        cell1.recepientEmailTF.delegate = self
                    cell1.recepientEmailTF.allowsEditingTextAttributes = true

        let texfielf = cell1.recepientEmailTF

        MyGlobalVariables.emails.removeAll()

        MyGlobalVariables.emails = ["","",""]

       // cell1.recepientEmailTF.text = "Suka blyat" <- even this simple text doesnt appear

        MyGlobalVariables.emails[0].append(self.messages[indexPath.row].email1!)           
        texfielf?.text = MyGlobalVariables.emails[0]            
       //cell1.recepientEmailTF.text =  MyGlobalVariables.emails[0] <- this code also doesnt work           

        MyGlobalVariables.emails[1].append(self.messages[indexPath.row].email2!)           
         texfielf?.text = self.messages[indexPath.row].email2!

        MyGlobalVariables.emails[2].append(self.messages[indexPath.row].email3!)
        texfielf?.text = self.messages[indexPath.row].email3!

        DispatchQueue.main.async {
            newMessageVC?.receiverEmailTableView.reloadData()
        }
       //CONCERN POINT: ->up to here


        messageBody?.text = self.messages[indexPath.row].message!
        dateField?.text = self.messages[indexPath.row].setupDate!

        if let autoID2 = self.messages[indexPath.row].autoID {
            MyGlobalVariables.messageForUpdate1.append(autoID2) }
    })

}

return [edit]
}

我的UITableViewCell类      公共类TextInputTableViewCell:UITableViewCell,UITextFieldDelegate {

@IBOutlet weak var recepientEmailTF: UITextField!

override public func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override public func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
}}

我将不胜感激。

0 个答案:

没有答案