gpt4 book ai didi

ios - 通过 Swift 中的 segue 将点击的单元格数据传递到另一个 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:53:02 27 4
gpt4 key购买 nike

我有一个 tableView,我正在尝试通过 segue 将与点击单元格相关的数据发送到另一个 View 。我的代码仅在第二次点击后才有效,并且在第一次点击时始终返回 nil。我想出于某种原因 prepareForSegue 首先被执行,这就是为什么 detailToSend 在第一次点击时总是 nil ,而在第二次点击时我从前一个点击的单元格中获取数据。我怎样才能解决这个问题 ?更新:

var detailToSend = SingleRepository()

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if filteredResult.count > 0 {
detailToSend = filteredResult[indexPath.row]
} else {
detailToSend = finalArrayUnwrapped[indexPath.row]
}
performSegue(withIdentifier: "showDetailSegue", sender: nil)
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetailSegue" {
let vc = segue.destination as! DetailViewController
vc.detail = detailToSend
}
}

我的细节 View Controller

class DetailViewController: UIViewController {


@IBOutlet weak var detailLabel: UILabel!

var detail: SingleRepository?

override func viewDidLoad() {
super.viewDidLoad()

if let detailUnwrapped = detail {
print(detailUnwrapped)
}

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

最佳答案

确保您已经从 Storyboard 中的 View Controller 对象而不是单元格创建了您的转场;如果您从单元格创建转场,则转场将在调用 didSelectRowAt 之前触发。

一旦正确设置了 segue,就可以使用 sender 参数来避免使用 detailToSend 属性:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

var detailToSend: SingleRepository
if filteredResult.count > 0 {
detailToSend = filteredResult[indexPath.row]
} else {
detailToSend = finalArrayUnwrapped[indexPath.row]
}
performSegue(withIdentifier: "showDetailSegue", sender: detailToSend)
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? DetailViewController, let detailToSend = sender as? SingleRepository {
vc.detail = detailToSend
}
}

关于ios - 通过 Swift 中的 segue 将点击的单元格数据传递到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52025355/

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