gpt4 book ai didi

macos - 在 Swift 中以编程方式创建 NSTextFields

转载 作者:搜寻专家 更新时间:2023-11-01 06:09:57 24 4
gpt4 key购买 nike

有什么方法可以使用 Swift 完全以编程方式创建 NSTextFields 吗?我正在创建一个我不想连接到 Storyboard的 mac 应用程序,但除了创建 IBOutlet 之外,我想不出任何创建 NSTextFields 的方法。顺便说一下,我是编程新手,很抱歉我缺乏技术语言。

谢谢!

编辑:

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

当我这样做时,我收到错误消息“ fatal error :在展开可选值时意外发现 nil。”无论我测试 SKView 还是 NSView,都会弹出相同的错误消息。如果我尝试将 IBOutlet 定义为“view”而不是“test”,它会告诉我无法覆盖存储的属性“view”。

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 的情况下尝试这样做,只是使用 View ,我不会收到任何错误,但文本字段不会显示:

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)
}

最佳答案

你可以轻松做到。只需将您的 View 连接到 socket ,然后您就可以这样做:

import Cocoa

class AppDelegate: NSObject, NSApplicationDelegate {

private var window: NSWindow?

let textField = NSTextField(frame: .init(x: 20, y: 20, width: 200, height: 40))

func applicationDidFinishLaunching(_ aNotification: Notification) {
window = NSWindow(contentRect: NSScreen.main?.frame ?? .zero,
styleMask: [.miniaturizable, .closable, .resizable, .titled],
backing: .buffered,
defer: false)
window?.title = "My App"
window?.makeKeyAndOrderFront(nil)

textField.textColor = .red
textField.stringValue = "Hello World !!!"
window?.contentView?.addSubview(textField)
}

func applicationWillTerminate(_ aNotification: Notification) {
// Insert code here to tear down your application
}
}

main.swift 文件添加到您的项目中:

import Cocoa

let delegate = AppDelegate()
NSApplication.shared.delegate = delegate
_ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)

然后在您的目标部署信息中,从主界面中删除 main.storyboard:

enter image description here

关于macos - 在 Swift 中以编程方式创建 NSTextFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27872451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com