gpt4 book ai didi

ios - "Attempt to present VC on VC whose view is not in the window hierarchy!"当从桌面 View 按下按钮时

转载 作者:行者123 更新时间:2023-11-30 10:55:08 25 4
gpt4 key购买 nike

尝试构建我的第一个应用程序。使用 TableView 呈现 4 个不同的部分。每个部分都有自己的单元类型,该类型在 .xib 文件中定义。在 TableView 的最后一部分中,单元格显示有两个按钮:加号和减号。

例如,当按下加号按钮时,它会调用与单元格相关的类中的以下代码:

// link to the viewcontroller with the tableview in it
let mainViewController = ViewController()

// func called when plusbutton is tapped
@IBAction func plusButtonTapped(_ sender: UIButton) {
// viewcontroller that should popup when the button is tapped
let popup = PopupViewController()
let sbPopup = SBCardPopupViewController(contentViewController: popup)
// call to show()
sbPopup.show(onViewController: mainViewController)
}


// show() function that is called
public func show(onViewController viewController: UIViewController) {
self.modalPresentationStyle = .overCurrentContext
viewController.present(self, animated: false, completion: nil)
}

当我点击模拟器中的按钮时,它应该显示 PopupViewController,但显示以下警告:

 Warning: Attempt to present "balance1.SBCardPopupViewController:     0x7fdf8752cb20> on <balance1.ViewController: 0x7fdf8743cac0> whose view is not in the window hierarchy!

我尝试研究该警告并发现了一些与之相关的其他主题。这些解决方案都不适合我。也许这与我从 .xib 文件中定义的单元格调用 plusButtonTapped() 有关?

我在 YouTube 上关注了本教程:https://www.youtube.com/watch?v=9yUIOjykPDU一切都很顺利,直到 10:36,show() 在按钮所在的同一 VC 上被调用,该 VC 调用了该函数。在我的例子中,调用 show() 函数的 plusButton 位于单独的 .xib 文件中定义的单元格上,因此不在(主)VC 上(如教程中所示)。这与我面临的问题有什么关系吗?

最佳答案

错误消息看起来是正确的。只需查看您的代码,“悬空”mainViewController 尚未添加到窗口中。

// link to the viewcontroller with the tableview in it
let mainViewController = ViewController()

这一行上面的注释似乎表明它是到父 View Controller 的链接,但它实际上是一个新实例化的 View Controller 。您需要通过层次结构向下传递实际的父级才能实现您想要的目标。

如果您为每个单元格提供某种类型的“presentationDelegate”,它可以处理所有卡片的演示,那么您可以让自己变得更轻松。

关于ios - "Attempt to present VC on VC whose view is not in the window hierarchy!"当从桌面 View 按下按钮时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54050751/

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