gpt4 book ai didi

ios - 在 Swift 3 中选择 UITableView 单元格后将字符串设置为 var

转载 作者:可可西里 更新时间:2023-11-01 01:58:44 26 4
gpt4 key购买 nike

我正在制作一个音频应用程序,我正在使用来自 JSON 的数据填充一个 TableView Controller 。根据用户的选择,我想将单元格中显示的 episode_name 传递到 segue 后的下一个 View 中。

到目前为止,表格加载了数据,我可以将本地定义的变量传递给下一个 View ,但我无法将单元格中的字符串复制到该变量中。

这是我的代码。

func extract_json(_ data: Data)
{
//... removed to condense
if let shows_list = json as? NSArray
{
for i in 0 ..< data_list.count
{
if let shows_obj = shows_list[i] as? NSDictionary
{
let episode_name = shows_obj["episode"] as? String
let episode_date = shows_obj["date"] as? String
TableData.append(episode_date! + " | " + episode_name!)
}
}
}

DispatchQueue.main.async(execute: {self.do_table_refresh()})

}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.performSegue(withIdentifier: "passer", sender: indexPath)

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "passer" {

let vc = segue.destination as! EpisodeViewController
vc.variableInSecondVc = "Pass Variable" // this is where I want to pass episode_name

}

} // end segue

我尝试过的解决方案:
1) 如果我立即调用 episode_name,它会标记它,因为该变量包含在先前的函数中,
2) 如果我尝试在 ViewDidLoad 中运行 extract_json 函数,它会导致代码中出现其他问题。

我是 Swift 的新手并且不确定 - 是否有更好的方法从该单元格“复制”字符串并将其传递给 vc.variableInSecondVc

编辑:一点澄清。如果我运行这段代码,它会成功地将后续的 UILabel 更改为“Pass Variable”——但当然,我实际上想通过更改它来将 PassVariable 动态化以反射(reflect)episode_name 的字符串。

最佳答案

performSegue(withIdentifier:sender:) 方法有两个参数,1. Segue 标识符,2. 您要传递的 AnyObject 类型的参数?

self.performSegue(withIdentifier: "passer", sender: indexPath)

prepare(for:sender:) 方法中,您检查 segue 标识符并将 sender 参数转换为您之前传递的类型,并从数组列表中获取数据以将其传递给下一个 View Controller 。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "passer" {
guard let indexPath = sender as? IndexPath else { return }

let data = TableData[indexPath.row] //write your logic here to get value from your data list based on index path row value and pass value to view controller.

let vc = segue.destination as! EpisodeViewController
vc.variableInSecondVc = data //value which you got from list based on indexPath
}
}

关于ios - 在 Swift 3 中选择 UITableView 单元格后将字符串设置为 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48334958/

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