我有一个快速的项目,我根据连接到PC的设备数量以编程方式制作按钮(简而言之)。所有这些设备都要获得自己的指定视图,用户可以在其中调整此设备的设置。
到目前为止,我设法完成的是以编程方式放置按钮,并以编程方式为每个设备创建视图:
func createView() {
let frame : NSRect = NSMakeRect(32, 32, 200, 200)
let view : NSView = NSView(frame: frame)
view.wantsLayer = true
view.layer?.backgroundColor = NSColor.red.cgColor
self.view = view
}
现在,我所做的是按下按钮时,该按钮对应于按钮:
@objc private func switchToView(sender : OpenDeviceButton) {
let device : Device = sender.device!
self.view.window?.contentView = device.view
}
但是,我打算做的不是改变一切,而是只改变一小部分。所以,我想到的是使用ContainerView
并切换嵌入的内容,但是,我无法找到Apple文档中的任何内容来帮助我。
有没有办法将容器视图的内容换成另一个NSView
?
感谢。
答案 0 :(得分:2)
您可以手动替换子视图:
let oldView = self.view.window?.contentView!.subviews[0]
let frame = oldView.frame
oldView.removeFromSuperview()
device.view.frame = frame
self.view.window?.contentView!.addSubview(device.view)