Как передать несколько данных в одном табличном представлении - PullRequest
0 голосов
/ 21 февраля 2020

Здравствуйте, у меня есть два разных массива данных, которые мне нужно передать в контроллер представления, мой дизайн ViewControllers такой же, но единственным отличием являются данные. Как мне это сделать? это мой код

var attendance: [GAttendance]!
var subjectAttendances: [GAttendances]!

// In my A controller
let detailAbsenceVC                 = DetailAbsenceVC()
detailAbsenceVC.attendance      = attendances
self.present(detailAbsenceVC, animated: true)

// In my B controller
let detailVC                    = DetailAbsenceVC()
detailVC.subjectAttendances = subjectAttendances
self.present(detailVC, animated: true, completion: nil)

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return attendance.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: GStudentAbsenceCell.cellID, for: indexPath) as! GStudentAbsenceCell
    let attendanceItem = attendance[indexPath.row]
    cell.configureCell(attendance: attendanceItem)
    return cell
}

1 Ответ

1 голос
/ 21 февраля 2020

Если вы не различаете guish, независимо от того, пришли вы из A или B, вам нужен только один массив для хранения данных в DetailAbsenceVC, давайте назовем его detailData:

class DetailAbsenceVC : UIViewController {
    var detailData = [GAttendance]()

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return detailData.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: GStudentAbsenceCell.cellID, for: indexPath) as! GStudentAbsenceCell
        let attendanceItem = detailData[indexPath.row]
        cell.configureCell(attendance: attendanceItem)
        return cell
    }
}

Затем в контроллере A / B просто установите detailData:

// In my A controller
let detailAbsenceVC         = DetailAbsenceVC()
detailAbsenceVC.detailData  = attendances
self.present(detailAbsenceVC, animated: true)

// In my B controller
let detailVC        = DetailAbsenceVC()
detailVC.detailData = subjectAttendances
self.present(detailVC, animated: true, completion: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...