gpt4 book ai didi

ios - 将侧边菜单中的数据传回其原始 View Controller

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

我有一个“国家”ViewController有两个ContainerViews : 侧面菜单 ( TocVC ) 和数据屏幕 ( CountryDetailsVC ) 在上面。控制侧边菜单切换的按钮位于导航栏中。

侧边菜单有一个 TableView然后 didSelectRowAt indexPath我想通过它的 String值返回到数据屏幕并将其分配给 Label在上面。

这是我试过的:

TocVC :

var selectedItem:String = ""
...

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
selectedItem = contents[indexPath.row]
let VC = CountryDetailsVC()
VC.labelUpdate(dataFrom: selectedItem)
}

CountryDetailsVC :

@IBOutlet weak var label: UILabel!
...

func labelUpdate(dataFrom: String) {
self.label.text = dataFrom
}

但我得到了 Fatal error: Unexpectedly found nil while unwrapping an Optional value据我了解,因为TocVC通过了数据但是 CountryDetailsVC没有“刷新”自身并运行函数。

做我想做的事情的正确方法是什么?

编辑: Storyboard 截图 Storyboard

EDIT1:更新代码。

Country :

let detailsVc = CountryDetailsVC()

TocVC :

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
selectedItem = contents[indexPath.row]

Country().detailsVc.labelUpdate(dataFrom: selectedItem)

CountryDetailsVC :

@IBOutlet weak var label: UILabel!

func labelUpdate(dataFrom: String) {
print("dataFrom: \(dataFrom)")
self.label.text = dataFrom
}

函数打印出dataFrom字符串到控制台,但在下一行尝试分配 dataFrom 时崩溃至 label.text .当我改变 label: UILabel!label: UILabel?它不会崩溃,但也不会更改文本。也许与this similar situation有关?

EDIT2:更新代码。引用self继续 TocVC .还是不行。

Country :

let detailsVc = CountryDetailsVC()
...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue .destination is TocVC {
let vc = segue.destination as? TocVC
vc?.countryVC = self
}
}

TocVC :

var countryVC: Country?
...
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
selectedItem = contents[indexPath.row]

Country().detailsVc.labelUpdate(dataFrom: selectedItem)

CountryDetailsVC :

@IBOutlet weak var label: UILabel!

func labelUpdate(dataFrom: String) {
print("dataFrom: \(dataFrom)")
self.label.text = dataFrom
}

最佳答案

与其在 tableView(:didSelectRowAt:) 中创建 CountryDetailsVC 的新实例,不如在父级中存储对 CountryDetailsVC 的引用在变量中查看 Controller ,例如在嵌入转场的 prepare(for:sender:) 中,然后稍后在该变量上调用您的函数。

关于ios - 将侧边菜单中的数据传回其原始 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51763680/

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