在Swift中以编程方式创建NSTextFields

时间:2015-01-10 03:03:33

标签: macos swift xcode6 nstextfield

有没有办法使用Swift以编程方式完全创建NSTextFields?我正在创建一个我不想连接到故事板的mac应用程序,但除了制作IBOutlet之外,我无法弄清楚创建NSTextField的任何方法。顺便说一下,我是编程的新手,很抱歉我缺乏技术语言。

谢谢!

编辑:

这是我到目前为止尝试过的代码:

当我这样做时,我收到错误消息"致命错误:在展开Optional值时意外发现nil。"无论我是否测试SKView或NSView,都会弹出相同的错误消息。如果我尝试将IBOutlet定义为"查看"它告诉我,我无法覆盖存储的属性"查看"。

import Foundation
import Cocoa
import SpriteKit

class SettingsScene: SKScene {

    @IBOutlet weak var window: NSWindow!
    @IBOutlet weak var test: SKView!

    var ballSpeedText = NSTextField(frame: NSMakeRect(20,20,200,40))

    override func didMoveToView(view: SKView) {
        ballSpeedText.textColor = NSColor.redColor()
        ballSpeedText.stringValue = "Test"
        test.addSubview(ballSpeedText)
    }

如果我尝试不创建任何IBOutlets,只使用视图,我没有收到任何错误,但文本字段没有显示:

import Foundation
import Cocoa
import SpriteKit

class SettingsScene: SKScene {

    var ballSpeedText = NSTextField(frame: NSMakeRect(20,20,200,40))

    override func didMoveToView(view: SKView) {
        ballSpeedText.textColor = NSColor.redColor()
        ballSpeedText.stringValue = "Test"
        view.addSubview(ballSpeedText)
    }

1 个答案:

答案 0 :(得分:5)

您可以轻松完成。只需将您的视图连接到插座,然后就可以这样做:

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

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

    let myTextField = NSTextField(frame: NSMakeRect(20,20,200,40))

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        myTextField.textColor = NSColor.redColor()
        myTextField.stringValue = "Hello World !!!"
        view.addSubview(myTextField)
    }
}