我正在尝试将一条消息从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
}
答案 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
}
}