gpt4 book ai didi

ios - Swift 尝试以模态方式呈现事件 Controller [当前 View Controller ],即使呈现的 Controller 是另一个 Controller

转载 作者:行者123 更新时间:2023-11-28 09:50:51 31 4
gpt4 key购买 nike

我已经阅读了一些答案,例如关闭当前的 ViewController,但我的情况有所不同,因为我正在展示另一个 ViewController。

虽然我无法访问它的属性,但此代码显示了带有导航 Controller 的 View Controller :

@IBAction func didTouchAddFriend(_ sender: UIButton) {
DispatchQueue.main.async {

let storyBoard = UIStoryboard(name: "CustomContact", bundle: nil)
let customContactVC = storyBoard.instantiateViewController(withIdentifier: "CustomContact")

}
}

虽然这个不行

@IBAction func didTouchAddFriend(_ sender: UIButton) {
DispatchQueue.main.async {

let navigation = UIStoryboard.init(name: "CustomContact", bundle: nil).instantiateInitialViewController() as! UINavigationController
let pickerUserVC = navigation.viewControllers.first as! CustomContactsViewController
self.present(pickerUserVC, animated: true, completion: nil)

}
}

我有另一个名为 CustomContact.storyboard 的 Storyboard,其中包含一个 CustomContactsViewController

当我点击 didTouchAddFriend 时,它只显示这个错误:

'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <Main.MainViewController: 0x7ff29f06ac00>.'

当我打印 pickerUserVC 的值时,我无法理解错误原因,它显示了正确的 View Controller :

<Main.CustomContactsViewController: 0x7fd1b7922400>

MainViewController 是实现 didTouchAddFriend 函数的当前 View Controller

最佳答案

您应该显示导航 Controller (它托管 CustomContactsViewController,因为它是 Root View Controller )。

此外,您可以跳过 Dispatch 调用,因为我们在一个已经在主线程中运行的 @IBAction 中:

@IBAction func didTouchAddFriend(_ sender: UIButton) {
let navigation = UIStoryboard.init(name: "CustomContact", bundle: nil).instantiateInitialViewController() as! UINavigationController
let pickerUserVC = navigation.viewControllers.first as! CustomContactsViewController
self.present(navigation, animated: true, completion: nil)
}

关于ios - Swift 尝试以模态方式呈现事件 Controller [当前 View Controller ],即使呈现的 Controller 是另一个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48336697/

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