gpt4 book ai didi

macos - addSubview(...) 导致额外的窗口

转载 作者:行者123 更新时间:2023-11-28 09:19:14 24 4
gpt4 key购买 nike

在使用 addSubview() 加载 View Controller View 时,我遇到了一个奇怪的行为:

硬件和软件:OSX 10.9.5 Mavericks、XCode 6 Beta 6 上的 Cocoa Swift 应用

目标:应用程序,以编程方式从其自己的 xib 加载 ViewController 并将 VC View 映射到主窗口

主菜单.xib:只有一个 View (NSView) 的窗口作为 Controller View 的 anchor

SpecialsVC.xib只有一个标签“Specials View”的 View (NSView),链接到文件所有者的 View

AppDelegate 和 View Controller SpecialsVC 的 Swift 代码:

class SpecialsVC : NSViewController {
required init(coder aDecoder: NSCoder!) { super.init(coder: aDecoder); }

override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
}


class AppDelegate: NSObject, NSApplicationDelegate {

@IBOutlet weak var window: NSWindow!
@IBOutlet weak var anchorView: NSView!

var specialsVC = SpecialsVC(nibName: "SpecialsVC", bundle: nil );

func applicationDidFinishLaunching(aNotification: NSNotification?) {
anchorView.addSubview( specialsVC.view ); // <— 2nd window opens here
specialsVC.view.frame = anchorView.bounds;
}

func applicationWillTerminate(aNotification: NSNotification?) { }
}

运行应用:1 ) 主窗口按预期打开, View Controller 从 nib 加载,其 View 放置在主窗口的 anchor View 上。 —> 确定2 ) 标题为“Window”的第二个空窗口打开。可以关闭,对主窗口没有影响。 —> ??????????

调试:跨过 anchorView.addSubview( specialsVC.view ) 时出现意外窗口

也试过1:不是以编程方式加载 View Controller ,而是通过 MainMenu.xib 中的 View-Controller-Object 的 outlet —> 相同的效果

也尝试了 2:在主窗口上放置一个按钮,并将 View Controller 加载到按钮操作中的局部变量中。 --> 没有出现第二个窗口,但是离开操作时 Controller 丢失了。将本地变量复制到实例变量 —> 第二个窗口出现

提示:当 View Controller View 的大小更改时,第二个窗口的大小不会更改。

我做错了什么?第二个窗口从哪里来?

亲切的问候乌尔里希

最佳答案

我认为您应该将 be specialsVC.view.frame = anchorView.bounds 放在 addSubview() 方法之前。我认为否则它们将被忽略。这就像在函数中的 return 语句之后添加一个声明。

关于macos - addSubview(...) 导致额外的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26151969/

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