gpt4 book ai didi

swift - 如何从子窗口连接文本字段?

转载 作者:行者123 更新时间:2023-11-30 12:31:06 25 4
gpt4 key购买 nike

我有一个运行良好的单窗口(OSX,不是 iOS)应用程序,但我需要添加一个“首选项”窗口。我已经创建了该窗口并将其链接到“首选项”菜单(它按预期打开并显示)。但是,现在我需要与我设置的文本字段进行交互。

这是我的新窗口: Settings.xib

这是我的主窗口: MainMenu.xib

同样,我可以很好地显示它,但我需要能够在“设置”窗口中设置文本字段的值。不太确定该怎么做?我现在正试图远离 Storyboard(只是想让它简单;也许是第二阶段)。我将设置窗口中的值存储在钥匙串(keychain)中(在 MainMenu.xib 中工作得很好)。现在我只需要能够输入它们并从 Settings.xib 中保存它们。

我的文件结构非常简单。我有 AppDelegate.swift 它正在完成所有工作。我是否(以及如何)将 Settings.xib 连接到 AppDelegate?我知道我可以将 Settings.xib 中的文本字段绑定(bind)到 AppDelegate 中的导出(但是当我这样做时,我收到错误: [General] [ valueForUndefinedKey :]:此类对于键 accountNumber 不符合键值编码。

我知道这是一个n00b问题,但它太简单了,很难找到适用的答案。

谢谢!

最佳答案

创建一个新的窗口 Controller 是关键。正如我在问题中所述,我的问题是将文本字段连接为功能 socket 。我能够根据需要显示窗口,只是无法访问文本字段。

我创建了 SettingsWindowController.swift 来子类 NSWindowController。我的连接如图:

Window connections

File's Owner connections

此外,在Settings.xib中,File's OwnerCustom Class被设置为SettingsWindowController。然后各个文本字段作为导出连接到 SettingsWindowController.swift

SettingsWindowController.swift中:

`import Cocoa

class SettingsController: NSWindowController, NSWindowDelegate
{
@IBOutlet weak var accountNumber: NSTextField!
@IBOutlet weak var meterNumber: NSTextField!
@IBOutlet weak var webCredentialKey: NSTextField!
@IBOutlet weak var webCredentialPassword: NSTextField!

// allows window creation without needing to specify NIB name
override var windowNibName: String! {
return "Settings"
}

override func windowDidLoad() {
super.windowDidLoad()

// initialization code removed for brevity
}

func windowWillClose(_ notification: Notification) {
// teardown code removed for brevity

NSApplication.shared().stopModal()
}
}'

AppDelegate.swift中,

`var prefs: SettingsController? = nil

@IBAction func OpenPreferences(_ sender: Any) {
DispatchQueue.main.async(execute: { () -> Void in
NSApplication.shared().runModal(for: (self.prefs?.window)!)
})
}`

func applicationDidFinishLaunching(_ aNotification: Notification)
{
// Insert code here to initialize your application

prefs = SettingsController()
}`

希望这对其他人有帮助。

关于swift - 如何从子窗口连接文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43552074/

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