gpt4 book ai didi

ios - 如何从 Storyboard中定义了 segue 的推送 vc 执行 segue

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

事情是这样的:我的 Storyboard作为SettingViewController(在命名为SVC之后)和StationsViewcontroller,后者通过“openDetails”segue连接到详细信息 View Controller 。

出于实际原因,我的 SVC 可以推送多个级别的具体设置 View Controller ,而我没有在 Storyboard中定义这些级别。

在某一时刻,其中一个 vc 会推送 StationsViewController,然后它可以向详细信息发出一个 PerformSegue:不幸的是,我得到“openDetails”segue 未定义。

我应该做什么来解决这个问题?

--

代码没有什么奇特之处,在SettingsViewController中,我推送了其他VC,包括StationsViewController:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// Gracefully remove the selection
tableView.deselectRow(at: indexPath, animated: true)

guard let section = MainSections(rawValue: indexPath.section) else { return }

switch section {
case .stations:
let vc = StationsViewController()
// Do no segue at dismiss
vc.onlyDismiss = true
vc.didDismiss = {
self.navigationController?.popViewController(animated: true)
}
push(vc, hideNavigation: true)

// Blah blah

在我想要获取详细信息的 StationsViewController 中,我执行以下操作:

func openPoiDetails(_ gs: GasStation) {

poiDetails = gs

performSegue(withIdentifier: "poiDetails", sender: nil)

// Blah blah

Storyboard如下,我们可以看到左侧的StationsViewController通过“openDetails”segue连接到details vc:

enter image description here

最佳答案

问题是您的 StationsViewController 刚刚从其初始值设定项创建,而 storyboard 对它一无所知。因此,您不能使用segue。相反,您需要要求 storyboard 实例化 StationsViewController:

替换:

let vc = StationsViewController()

与:

let vc = self.storyboard?.instantiateViewController(withIdentifier: "StationsViewController") as! StationsViewController

确保您在 Xcode 的识别检查器中将“StationsViewController”设置为Storyboard ID

关于ios - 如何从 Storyboard中定义了 segue 的推送 vc 执行 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57977650/

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