Как вы отображаете 2 tableViews одного и того же пользователя?База данных Firebase - PullRequest
0 голосов
/ 26 сентября 2018

База данных Firebase

Firebase Database

driver1 Главная страница

driver1 Main page

детали автомобиля Toyota

toyota car details

Финальный выход

enter image description here Так что проблема в том, что driver1 имеет 2 машины,как я могу сделать tableView для отображения информации об автомобиле Toyota и Mazda.

Мне удалось показать список автомобилей водителя 1 по этому коду:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "driverRequestCell", for: indexPath)

if let email = Auth.auth().currentUser?.email {

Database.database().reference().child("Driver").queryOrdered(byChild: "email").queryEqual(toValue: email).observe(.childAdded, with: { (snapshot) in

    let snapshot = self.driverRequests[indexPath.row]

    if let driverRequestDictionary = snapshot.value as? [String:AnyObject] {

    if let typeOfCar = driverRequestDictionary["car"] as? String {

            cell.textLabel?.text = typeOfCar

        }
    }
})
}
return cell

}

Итак, мой текущий код для didSelectRowAtэто:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let snapshot = driverRequests[indexPath.row]

    performSegue(withIdentifier: "carDetailsSegue", sender: snapshot)

}

Я думаю, что это как-то связано со снимком, но я не могу понять это.Нужна помощь от профи

1 Ответ

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

Если вы хотите показать всю информацию об автомобиле в одной и той же ячейке, сначала вам нужна ячейка с тремя UILabel, по одной для всей информации, которую вы хотите показать. Это пример:

enter image description here

Я полагаю, у вас есть свой собственный класс ячеек, поэтому вам нужно перетаскивать ярлыки с выводами в ваш класс.

Теперь вам нужно изменить код в cellForRowAt:таким образом:

if let driverRequestDictionary = snapshot.value as? [String:AnyObject] {

if let typeOfCar = driverRequestDictionary["car"] as? String {
        cell.modelLabel?.text = typeOfCar
    }

if let colorOfCar = driverRequestDictionary["color"] as? String {
        cell.colorLabel?.text = colorOfCar
    }

if let plateOfCar = driverRequestDictionary["plate"] as? String {
        cell.plateLabel?.text = plateOfCar
    }
}

Можно использовать значение по умолчанию, если цвет и табличка не существует, добавив операторы else или используя три операнда:

`if let plateOfCar = driverRequestDictionary["plate"] as? String {
        cell.plateLabel?.text = plateOfCar
    }else{
       cell.plateLabel?.text = "Unknown"
    }`

ADVICE: Избегайте выполнения запроса в cellForRowAt: вместо этого сделайте асинхронный запрос (например, для viewDidLoad:) с использованием замыкания.Затем используйте результат замыкания для заполнения массива и перезагрузите представление таблицы.

РЕДАКТИРОВАТЬ:

Вы должны структурироватьТаким образом, ваши узлы, где giuseppesapienza - это идентификатор пользователя, а примечание - объект вашего автомобиля:

enter image description here

...