gpt4 book ai didi

swift - 来自 NSView 子类的 performSegueWithIdentifier?

转载 作者:搜寻专家 更新时间:2023-11-01 06:19:39 27 4
gpt4 key购买 nike

我有一个文档窗口,其中包含许多 NSView 子类,使用选项卡控件在它们之间切换。每个子类和窗口的 ViewController 都支持通过与 First Responder 关联的菜单项访问的不同用户操作。

我想从其中一个 View 执行转场以响应菜单项。但是,NSView 不支持 performSegueWithIdentifier,它似乎是 NSViewController 单独的一部分。

有人可以建议解决这个问题的方法吗?我看到过将 VC 传递到 View 中的建议,但我不清楚该怎么做。或者有更好的方法吗?

最佳答案

view.containingController.performSegue()

注意:您必须将 containingController 添加到您的 View 中

我会将 viewController 添加到响应链,然后将 containingController 设为扩展中的计算属性!

例如添加 vc 作为响应者:

override func awakeFromNib() {
super.awakeFromNib()
self.nextResponder = self.view
for subview in self.view.subviews {
subview.nextResponder = self
}
}

例如扩展中包含 Controller

extension NSView {

var containingController: NSViewController? {
get {
while(self.nextResponder != nil) {
if(self.nextResponder is NSViewController) {
return self.nextResponder
}
}
return nil
}
}
}

关于swift - 来自 NSView 子类的 performSegueWithIdentifier?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36403074/

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