gpt4 book ai didi

ios - Segue 没有将值从我的 StoriesTableViewController 传递到 SingleArtCallViewController。为什么会这样?

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

如果用户单击我的 StoriesTableViewController 中的表项,我需要将 id 的值传递给 SingleArtCallViewController,以便 SingleArtCallViewController 可以显示适当的详细信息。

问题是,如果我打印用户按下的项目的 ID,它会正确打印它。但它没有被其他 ViewController 接收到。有人可以为我解决这个问题吗?

故事 TableView Controller :

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
myIndex = indexPath.row

finalId = idTable[myIndex]

let story = stories[indexPath.row]
ArtcallID = story.id


performSegue(withIdentifier: "singleArtcall", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {


print(ArtcallID + "is the index of the item that was selected")
//this correctly prints the id
let id = segue.destination as! SingleArtcallViewController
id.ArtcallID = ArtcallID
// print("id: ",id)

}

SingleArtCallViewController:

var ArtcallID: String!

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

print("ArtcallID: ", ArtcallID)

//If I print this I"m getting the result "ArtcallID: some("")"


}

故事.swift:

import Firebase

class Story
{
var id: String = ""
var text: String = ""
var numberOfLikes = 0
var numberOfAngry = 0
let ref: DatabaseReference!
var fundedAmt: Int = 0
var targetAmt: Int = 0
var perfCity: String = ""
var targetDate: IntMax = 0
var backers: Int = 0
var fundedPercent: Int = 0
var imageURL: String = ""

init(text: String) {
self.text = text
ref = Database.database().reference().child("Fund").childByAutoId()
}

init(snapshot: DataSnapshot)
{
ref = snapshot.ref
if let value = snapshot.value as? [String : Any] {
text = value["artist_name"] as! String
backers = value["total_backers"] as! Int
perfCity = value["perf_location"] as! String
fundedAmt = value["amount_funded"] as! Int
targetAmt = value["target_amount"] as! Int
fundedPercent = value["percent_funded"] as! Int

// numberOfLikes = value["numberOfLikes"] as! Int
// numberOfAngry = value["numberOfAngry"] as! Int
id = snapshot.key
}
}

最佳答案

如果我正确理解您要实现的目标,并且您通过控制从原型(prototype)单元格拖动到 SingleArtcallViewController 创建了 segue:

代码不起作用的具体原因是 prepare(for segue:...) 比 tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 运行得早。此外,您运行 prepare for segue 两次。

如果是这样,你不需要这个方法

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

只需使用 prepare(for segue:...):

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let selectedRow = tableView.indexPathForSelectedRow?.row,
let vc = segue.destination as? SingleArtcallViewController else {return}
vc.artCallId = stories[selectedRow].id
}

关于ios - Segue 没有将值从我的 StoriesTableViewController 传递到 SingleArtCallViewController。为什么会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51392156/

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