如何快速将UITableViewCell数据发送到另一个ViewController?

时间:2018-11-18 07:48:04

标签: swift segue didselectrowatindexpath

我正在尝试将一条消息从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 :(得分:3)

首先,不要guard重用单元格。该代码不得崩溃。如果这样做,则表明存在设计错误。并使用返回非可选单元格的API。

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

要将数据发送到另一个视图控制器,请通过将表视图单元格连接到目标控制器,在Interface Builder中创建一个序列。

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
    }
}