Programtically에서 NSWindow 생성
Programtically에서 NSWindow 생성
제목과 같이 Interface Builder(이하 IB)를 사용하지 않고 코드를 사용하여 다른 창을 생성하는 방법에 대해 설명합니다.또한 생성 창의 표시, 닫기, 폐기 방법을 간단하게 소개한다.
IB에서 주 창 만들기
Create 및 Close 버튼을 간단하게 만듭니다.
Create 버튼을 눌러 NSWindow를 생성한 다음 생성된 NSWindow를 표시하려면 를 누릅니다.
Close 버튼은 생성된 NSWindow를 버리지 않고 닫기 기능을 사용합니다.
수정 2015.Nov
Swift 2.0 이후에는 NSWindow 생성 방법의 마지막 매개 변수 defer에 대해 "포위"를 사용해야 한다.
main.cself.window = NSWindow(contentRect: NSMakeRect(0, 0, 640,480),
styleMask: NSTitledWindowMask|NSResizableWindowMask|NSMiniaturizableWindowMask|NSClosableWindowMask,
backing: NSBackingStoreType.Buffered,
`defer`: false)
코드
main.cimport Cocoa
import Foundation
class ViewController: NSViewController {
//生成するwindow
var windowA:NSWindow?
//生成完了後はtrue
var windowAFlag:Bool = false
//windowAをコントロールするクラス
var windowAControl: NSWindowController?
//CreateボタンのAction
@IBAction func OpenWindow(sender: AnyObject) {
//windowが未生成の場合は生成する
if(!self.windowAFlag){
self.windowA = NSWindow(contentRect: NSMakeRect(0, 0, 640,480), styleMask: NSTitledWindowMask|NSResizableWindowMask|NSMiniaturizableWindowMask|NSClosableWindowMask, backing: NSBackingStoreType.Buffered, defer: false)
self.windowA!.title = "New Window"
self.windowA!.opaque = false
self.windowA!.center()
self.windowA!.movableByWindowBackground = true
self.windowA!.backgroundColor = NSColor(calibratedHue: 0, saturation: 1.0, brightness: 0.5, alpha: 0.7)
self.windowA!.makeKeyAndOrderFront(nil)
self.windowAControl = NSWindowController(window:self.windowA)
self.windowAFlag = true
}else{//windowがすでに生成されている場合はNSWindowControllerを使用してwindowを表示
self.windowAControl!.showWindow(nil)
}
}
//Closeボタン用のAction
@IBAction func CloseWindow(sender: AnyObject) {
//NSWindowクラスのclose()は、生成したwindowを破棄する
//self.windowA!.close()
//単純に閉じたい場合はNSWindowControllerのclose()を使う
self.windowAControl!.close()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
}
#결과
참고 자료
Reference
이 문제에 관하여(Programtically에서 NSWindow 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Talokay/items/af5b72b0c985b8897506
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Swift 2.0 이후에는 NSWindow 생성 방법의 마지막 매개 변수 defer에 대해 "포위"를 사용해야 한다.
main.c
self.window = NSWindow(contentRect: NSMakeRect(0, 0, 640,480),
styleMask: NSTitledWindowMask|NSResizableWindowMask|NSMiniaturizableWindowMask|NSClosableWindowMask,
backing: NSBackingStoreType.Buffered,
`defer`: false)
코드
main.cimport Cocoa
import Foundation
class ViewController: NSViewController {
//生成するwindow
var windowA:NSWindow?
//生成完了後はtrue
var windowAFlag:Bool = false
//windowAをコントロールするクラス
var windowAControl: NSWindowController?
//CreateボタンのAction
@IBAction func OpenWindow(sender: AnyObject) {
//windowが未生成の場合は生成する
if(!self.windowAFlag){
self.windowA = NSWindow(contentRect: NSMakeRect(0, 0, 640,480), styleMask: NSTitledWindowMask|NSResizableWindowMask|NSMiniaturizableWindowMask|NSClosableWindowMask, backing: NSBackingStoreType.Buffered, defer: false)
self.windowA!.title = "New Window"
self.windowA!.opaque = false
self.windowA!.center()
self.windowA!.movableByWindowBackground = true
self.windowA!.backgroundColor = NSColor(calibratedHue: 0, saturation: 1.0, brightness: 0.5, alpha: 0.7)
self.windowA!.makeKeyAndOrderFront(nil)
self.windowAControl = NSWindowController(window:self.windowA)
self.windowAFlag = true
}else{//windowがすでに生成されている場合はNSWindowControllerを使用してwindowを表示
self.windowAControl!.showWindow(nil)
}
}
//Closeボタン用のAction
@IBAction func CloseWindow(sender: AnyObject) {
//NSWindowクラスのclose()は、生成したwindowを破棄する
//self.windowA!.close()
//単純に閉じたい場合はNSWindowControllerのclose()を使う
self.windowAControl!.close()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
}
#결과
참고 자료
Reference
이 문제에 관하여(Programtically에서 NSWindow 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Talokay/items/af5b72b0c985b8897506
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import Cocoa
import Foundation
class ViewController: NSViewController {
//生成するwindow
var windowA:NSWindow?
//生成完了後はtrue
var windowAFlag:Bool = false
//windowAをコントロールするクラス
var windowAControl: NSWindowController?
//CreateボタンのAction
@IBAction func OpenWindow(sender: AnyObject) {
//windowが未生成の場合は生成する
if(!self.windowAFlag){
self.windowA = NSWindow(contentRect: NSMakeRect(0, 0, 640,480), styleMask: NSTitledWindowMask|NSResizableWindowMask|NSMiniaturizableWindowMask|NSClosableWindowMask, backing: NSBackingStoreType.Buffered, defer: false)
self.windowA!.title = "New Window"
self.windowA!.opaque = false
self.windowA!.center()
self.windowA!.movableByWindowBackground = true
self.windowA!.backgroundColor = NSColor(calibratedHue: 0, saturation: 1.0, brightness: 0.5, alpha: 0.7)
self.windowA!.makeKeyAndOrderFront(nil)
self.windowAControl = NSWindowController(window:self.windowA)
self.windowAFlag = true
}else{//windowがすでに生成されている場合はNSWindowControllerを使用してwindowを表示
self.windowAControl!.showWindow(nil)
}
}
//Closeボタン用のAction
@IBAction func CloseWindow(sender: AnyObject) {
//NSWindowクラスのclose()は、生成したwindowを破棄する
//self.windowA!.close()
//単純に閉じたい場合はNSWindowControllerのclose()を使う
self.windowAControl!.close()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
}
Reference
이 문제에 관하여(Programtically에서 NSWindow 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Talokay/items/af5b72b0c985b8897506텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)