Как быстро отправить данные UITableViewCell в другой ViewController? - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь отправить одно сообщение из messageArray другому UIViewController, чтобы я мог загрузить комментарии к сообщению.Как я могу отправить структуру данных сообщения при нажатии на ячейку?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell") as? feedMessagesCell else {return UITableViewCell()}


        let message = messageArray[indexPath.row]
        cell.configureCell(content: message.content, userName: message.userName)
return cell

    }  

1 Ответ

0 голосов
/ 18 ноября 2018

Прежде всего, не guard повторное использование ячеек.Код не должен падать.Если это так, то обнаруживается ошибка проектирования.И используйте API, который возвращает необязательную ячейку.

let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell", for: indexPath) as! feedMessagesCell

Для отправки данных другому контроллеру представления создайте переход в Интерфейсном Разработчике, подключив ячейку табличного представления к контроллеру назначения..

В prepare(for segue отправителем является ячейка.Измените PushFeedDetail на реальный идентификатор и MyDestinationController на реальный класс.Создайте свойство message в целевом контроллере.Получите путь индекса из ячейки и передайте элемент в массив источника данных.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "PushFeedDetail" { 
        let selectedIndexPath = tableView.indexPath(for: sender as! feedMessagesCell)!
        let destinationController = segue.destination as! MyDestinationController
        let message = messageArray[selectedIndexPath.row]
        destinationController.message = message
    }
}
...