gpt4 book ai didi

swift - 关闭自更新到 swift 5 以来不起作用的工作表

转载 作者:行者123 更新时间:2023-11-30 10:37:27 24 4
gpt4 key购买 nike

我有一些在 Swift 4.x 下运行的代码。由于我已将应用程序更新为 Swift 5,它已停止工作。

我已阅读 Swift 5 的文档并仔细检查了我的代码。

有趣的是,当我将代码从早期版本 4 更新到更高版本 4 时,我遇到了类似的问题,但结果是他们改变了事情的工作方式。在本例中,情况似乎并非如此。

我有一个顶级类(class)

import Cocoa

class QuizManagementController: NSViewController {
...
var currentSheet: NSViewController!
...
}

扩展负责将自定义 View Controller 显示为工作表。

extension QuizManagementController {

...
func showQuestionSheet(questionType: Int16, isUpdate: Bool) {
...
currentSheet = controller
presentAsSheet(controller!)
}
...

}

另一个充当 SheetDelegate 的扩展

extension QuizManagementController: QuestionSheetDelegate {

func questionCancelled() {
self.dismiss(currentSheet)
}
...
}

当通过单击工作表上的按钮(在本例中为取消按钮)触发操作时,我希望工作表会关闭。

我在上面的 self.dimiss 行上放置了一个断点,我知道它正在被调用,但工作表并没有消失。

我还检查了 currentSheet 的所有内容是否包含对我期望的 Controller 的引用。

最佳答案

Objective-C 方法 dismissViewController: 现在已在 Swift 中 dismiss(_:)

func dismiss(_ viewController: NSViewController)

Objective-C 方法 dismissController: 在 Swift 中 dismiss(_:)

@IBAction func dismiss(_ sender: Any?)

self.dismiss(currentSheet) 调用 dismissController:。解决方案:将 currentSheet 转换为 NSViewController

self.dismiss(currentSheet as NSViewController)

关于swift - 关闭自更新到 swift 5 以来不起作用的工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57660443/

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