Как открыть данные, которые в tableView в новом контроллере, данные из FIrebase - PullRequest
0 голосов
/ 08 сентября 2018

Я хочу отправить текст в firebase, а затем извлечь его в tableView, но некоторые данные слишком длинные и не помещаются в одну строку, поэтому я хочу, чтобы данные могли быть открыты в новом контроллере, как освободить его?

Мой код:

class UserVC: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var tableView: UITableView!

var ref: DatabaseReference?
var databaseHandle:DatabaseHandle?
var postData = [String]()
var postOneData = 0

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.dataSource = self
    ref = Database.database().reference()
    databaseHandle = ref?.child("Child").observe(.childAdded, with: { (snapshot) in
        let post = snapshot.value as? String
        if let actualPost = post {
        self.postData.append(actualPost)
        self.tableView.reloadData()
    }
})
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return postData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell:UITableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "MySell") as UITableViewCell!
    cell.textLabel?.text = self.postData[indexPath.row]
    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "showText", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showText" {
        if let destinationVC = segue.destination as? ShowText {

        }
    }
}

1 Ответ

0 голосов
/ 08 сентября 2018

Предполагая, что в вас есть текстовая метка ShowText

private var textForShowText = String()  // a private class variable

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.textForShowText = self.postData[indexPath.row]
    performSegue(withIdentifier: "showText", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showText" {
        if let destinationVC = segue.destination as? ShowText {
            destinationVC.textLabel.text = textForShowText
        }
    }
}

Здесь я предполагаю, что ваш ShowText имеет UITextLabel с именем textLabel. Также убедитесь, что для numberOfLines текстовой метки установлено значение 0 . Вы также можете использовать UITextView, если хотите !!

...