gpt4 book ai didi

swift - 将 "correct"数据从 UITableViewController 中选定的单元格传递到 ViewController

转载 作者:行者123 更新时间:2023-11-30 13:06:33 25 4
gpt4 key购买 nike

我有一个UITableviewController,我在其中获取一个JSON文件并将其分解为各种对象以显示在我的tableview上(这工作正常)。

我还创建了变量来存储 tableview 中生成的单元格中的某些信息,并将其传递到 detailViewController(文本和图像)。

使用“prepare for segue”方法,我可以将所需的信息传递给detailViewController。但是,我一直遇到一个问题,即 detailViewController 中显示的数据不是所选单元格的数据,而是表格中最后加载的单元格中显示的数据。

我没有使用didSelectRowAtIndexPath,因为它似乎并没有做得更好,但创建了一个额外的segue屏幕(自动)。

总之,我的 TableViewController 在屏幕上一次显示大约 4 个单元格。无论我选择哪个单元格,传递到 DetailViewController 的信息始终是屏幕上显示的第四个单元格的信息。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Post Cell", forIndexPath: indexPath) as! TableViewCell

var dict = jsonArr[indexPath.row]
cell.postTitle.text = dict["data"]!["post_title"] as? String
cell.postTag.text = dict["data"]!["post_tags"] as? String
cell.postAddress.text = dict["data"]!["post_address"] as? String

titleToPass = cell.postTitle.text
postTagToPass = cell.postTag.text
addressToPass = cell.postAddress.text



override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

if (segue.identifier == "ListToDetail") {


let viewController = segue.destinationViewController as! DetailPostViewController

viewController.passedTitle = titleToPass
viewController.passedPostTags = postTagToPass
viewController.passedAddress = addressToPass


}
}

最佳答案

cellForRowAtIndexPath 会为每个单元格调用,因此变量的值始终与要更新的最后一个单元格相匹配。

不要在该方法中设置要传递的数据,而是在 prepareForSegue 中调用 indexPathForSelectedRow: 并使用索引路径的行从 jsonArr.

关于swift - 将 "correct"数据从 UITableViewController 中选定的单元格传递到 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39295019/

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