使用addSubview()加载视图控制器视图时,我遇到了一种奇怪的行为:
硬件和软件: OSX 10.9.5 Mavericks上的Cocoa Swift App,XCode 6 Beta 6
目标: App,以编程方式从自己的xib加载ViewController并在主窗口上映射VC视图
MainMenu.xib: 只有一个视图的窗口(NSView)作为控制器视图的锚点
SpecialsVC.xib 查看(NSView)只有一个标签“特殊视图”,视图链接到文件所有者
AppDelegate的Swift代码和视图控制器SpecialsVC:
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)主窗口按预期打开,视图控制器从笔尖加载,其视图放在主窗口的锚视图上。 - &GT;好 2)打开标题为“窗口”的第二个和空窗口。可以关闭,对主窗口没有影响。 - &GT; ?????????
调试: 单步执行anchorView.addSubview(specialsVC.view)
时会出现意外窗口也试过1: 不是以编程方式加载视图控制器,而是通过MainMenu.xib中View-Controller-Object的插座加载 - &gt;同样的效果
还试过2: 在主窗口上放置一个按钮,并将视图控制器加载到按钮操作中的局部变量中。 - &GT;没有第二个窗口出现,但离开操作时控制器丢失。将本地var复制到实例var - &gt;第二个窗口出现
提示: 当视图控制器视图的大小发生变化时,第二个窗口的大小不会改变。
我做错了什么?第二个窗口来自哪里?
亲切的问候乌尔里希
答案 0 :(得分:0)
我认为您应该在specialsVC.view.frame = anchorView.bounds
方法前加addSubview()
。我认为否则他们会被忽略。它就像在return语句之后在函数中添加声明一样。