gpt4 book ai didi

ios - 数据未出现在 View Controller 中

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

我一直在尽我所能,但似乎没有任何效果。我正在尝试将 firebase 用户信息从一个 View Controller 传递到另一个 View Controller ,但它从未出现。

它从表格 View 开始
表格 View 中填充了从我的 firebase 数据库中提取的用户。当用户选择一个单元格时,将执行以下代码:
我引用函数“showProfileControllerForUser”作为传输所选单元格数据的一种方式

var mainProfile: userProfileNavigator?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let user1 = self.users[indexPath.row]
self.mainProfile?.showProfileControllerForUser(user3: user1)

let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let vc: UINavigationController = storyboard.instantiateViewController(withIdentifier: "mainNavProfile") as! UINavigationController
self.present(vc, animated: true, completion: nil)
}

在“userProfileNavigator”中是之前使用的函数所在的位置。该函数将收集到的信息传递给最终目的地。
 func showProfileControllerForUser(user3: User){
mainProfile?.user2 = user3
}

最后,“mainProfile”是我希望将数据传递到的地方。
var user2: User?{
didSet{
navigationItem.title = user2?.name
}

我可以想象这非常令人困惑,如果需要,我可以提供更多信息或清晰度

试图这样设置表:
var mainProfile: mainProfile?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let user1 = self.users[indexPath.row]
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let vc: UIViewController = storyboard.instantiateViewController(withIdentifier: "mainProfile")
self.mainProfile?.user2 = user1
self.present(vc, animated: true, completion: nil)
}

以及在其中传递信息的 ViewController:
import UIKit
import Firebase

class mainProfile: UIViewController{
@IBOutlet weak var testLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
print("lets see if this is the new user", user2.name as Any)


}
var user2 = User()

}

但它仍然显示为“nil”

最佳答案

如果我理解你的问题,那么你有两个 ViewControllers .一个包含 UITableView ,另一个是 ShowProfileControllerForUser .

ViewController其中包含 UITableView ,代码如下:

    override func tableView(_ tableView: UITableView, didSelectRowAt  indexPath: IndexPath) {
let user1 = self.users[indexPath.row]
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let vc: UINavigationController = storyboard.instantiateViewController(withIdentifier: "mainNavProfile") as! UINavigationController
vc.user3 = user1
self.present(vc, animated: true, completion: nil)
}

另外,我不确定您是否提出了正确的 ViewController .

在您的 ShowProfileControllerForUser.swift ,
var user3 = User // declare a variable with proper type.

现在在您的 viewDidLoad() :
    override func viewDidLoad() {
super.viewDidLoad()
showProfileControllerForUser(user3)
}

编辑:
var mainProfile: mainProfile?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let user1 = self.users[indexPath.row]
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let vc: UIViewController = storyboard.instantiateViewController(withIdentifier: "mainProfile")
//self.mainProfile?.user2 = user1 // Instead of this line
vc.user2 = user1 // use this line
self.present(vc, animated: true, completion: nil)
}

关于ios - 数据未出现在 View Controller 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41543519/

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