gpt4 book ai didi

ios - 如何根据在前一个 Controller 中点击的单元格在 View Controller 上呈现数据

转载 作者:行者123 更新时间:2023-11-28 05:40:18 25 4
gpt4 key购买 nike

我有一个 View Controller A,它有五个静态 Collection View 单元格,带有一个标题标签和一个描述标签。根据点击的单元格,我需要转到 View Controller B,View Controller B 将显示与该数据关联的产品列表。

我尝试使用 didSelect 方法来执行此操作,但我认为我错了......我在使用打印语句后意识到我正确地让导航正常工作,而且我还可以在 View Controller A 上打印名称标签,但是传递给 View Controller B 的数据为零。

查看 Controller A

var参数:[参数] = [ Parameter(name: "Alkalinity", description: "这里描述的是稳定测量的重要性"), Parameter(name: "Calcium", description: "这里描述的是稳定测量的重要性"),//减少数量,这样我就不会在这里占用太多空间]

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let selectedCell = parameters[indexPath.row]
// Create an instance of DeatailViewController and pass that variable
let destinationVC = DetailViewController()
destinationVC.dataReceived = selectedCell.name
self.performSegue(withIdentifier: "segueID", sender: self)

}

View Controller B

只有一个打印语句。

预期:将我点击的单元格的名称传递给第二个 VC,(目前)但我想显示与名称标签中每个元素关联的产品列表。例如:Alkalinity 将显示 Alkalinity 产品(我应该在不同模型中定义它吗)?

错误:在 VCB 上显示为 nil

建议:

也许在 didSelectRow 中使用索引路径?

最佳答案

当使用 segue 传递数据时,你需要实现 prepareForSegue

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
self.performSegue(withIdentifier: "segueID", sender:parameters[indexPath.row])
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segueID" {
let vc = segue.destination as! DetailViewController
destinationVC.dataReceived = sender as! Model // Model is type of array parameters
}
}

但是使用 vc 实例化 DetailViewController() 你需要使用 present/push

let destinationVC = DetailViewController()
destinationVC.dataReceived = selectedCell.name
self.present(destinationVC,animated:true)

对于第二种呈现 DetailViewController() 的方式,应用程序会崩溃,因为你没有从 Storyboard加载 vc,所以它应该是这样的

let vc = self.storyboard!.instantiateViewController(withIdentifier: "DetailID") as! DetailViewController

关于ios - 如何根据在前一个 Controller 中点击的单元格在 View Controller 上呈现数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56998805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com