Я попытался создать пример приложения Cocoa, на котором я хочу подключить компоненты пользовательского интерфейса, размещенные на раскадровке, до ViewController.swift
как либо IBOutlet
, так и IBAction
. Однако, когда я попытался контролировать, перетащите компоненты пользовательского интерфейса на раскадровку (например, NSButton
) на ViewController.swift
и создайте метод @IBAction
, а затем запустите приложение, результирующее приложение зарегистрирует следующее сообщение на консоли и конечно, приложение не реагирует на меня нажатием кнопки.
Failed to connect (storyboard) outlet from (NSApplication) to (NSNibExternalObjectPlaceholder): missing setter or instance variable
Как я могу правильно использовать метод IBAction
?
Для информации здесь моя ViewController.swift
:
import Cocoa
class ViewController: NSViewController {
@IBOutlet var txtTitle : NSTextField
@IBOutlet var boxColor : NSBox
override func viewDidLoad() {
super.viewDidLoad()
}
func colorChanged(cp: NSColorPanel) {
let c:NSColor = cp.color;
self.boxColor.fillColor = c
}
@IBAction func btnSetColor(sender : AnyObject) {
let cp:NSColorPanel = NSColorPanel.sharedColorPanel()
cp.setTarget(self)
cp.setAction("colorChanged:")
cp.orderFront(nil)
}
@IBAction func btnSetWindowTitle(sender : AnyObject) {
if self.txtTitle.stringValue != "" {
println(self.title)
println(self.txtTitle.stringValue)
self.title = self.txtTitle.stringValue
}
}
}
Я использую Xcode 6 beta на OS X 10.10 Yosemite. И запустил шаблон с раскадрой.