有没有办法做到这一点https://imgur.com/a/BhKKA 但是以编程方式,
我有一个nsview课程,我想链接到我的应用程序 通过编程将其添加为自定义类?
let mymainWindow = NSWindow()
class keys: NSView{
override func performKeyEquivalent(with event: NSEvent) -> Bool {
return event.keyCode == 53 || event.keyCode == 36 //53 = Escape, 36 = Return
}
我需要将nsview类添加为mymainWindow的自定义类 但是以编程方式
答案 0 :(得分:0)
您似乎在询问替代性,这是支持面向对象设计的大多数(但不是全部)语言的核心功能。引用Wikipedia:
可替代性是面向对象编程的一个原则,在计算机程序中,如果
S
是T
的子类型,那么T
类型的对象可能是将替换为S
类型的对象(即类型T
的对象可以替换与子类型S
的任何对象)而不更改任何对象T
的理想属性(正确性,执行任务等)。
在您的情况下,这意味着您调用的NSView
函数将子视图添加到窗口的内容视图(或任何其他视图):
func addSubview(_ view: NSView)
将NSView
或其任何子类的实例作为参数,例如你的例子的Keys
类。因此,在编写自己的代码时使用子类很简单直接 - 您只需创建子类的实例并使用它,包括指定其超类的实例的位置。
我的类nsview类使用override func performKeyEquivalent(with event:NSEvent) - > Bool,以及链接到我的应用程序主窗口的唯一方法是将该类添加到nib文件中的自定义类字段,但现在我在代码中创建了自己的窗口,所以我不能将它添加到我显示的那个字段在图片中
这有点倒退。在编写代码的图形界面中,例如Xcode中的Interface Designer,设计者必须设计一种方法来实现可替代性,这样用户就可以像使用手工编写代码一样使用子类。 Xcode使用您所指的“自定义类”标题下的控件。
HTH
顺便说一下,你似乎是SO的新手:你的问题似乎源于你在理解编程语言的基本原理之前弄清楚如何在图形界面中做某事,因此来自某人的评论:如果您在创建应用程序之前了解macOS编程的基础知识会更好
他们试图帮助你。您的回复:
......愚蠢的评论......