带有Swift的OS X中的首选项菜单

时间:2015-12-28 20:03:23

标签: swift variables xcode7 preferences

我在尝试为我的应用设置“偏好设置”菜单时遇到了一些问题。 我目前正在使用Swift和Xcode 7。

我有一个从主菜单打开的首选项窗口。然而,一旦它开放是我的问题所在。我有2个按钮,一个用于重置用户输入,另一个用于保存信息。

我已设置重置按钮以使文本输入默认值。

我的下一个目标是让保存按钮在文本字段中使用任何输入的文本设置变量,然后关闭“首选项”窗口。然后,在理想的世界中,我希望能够重新打开首选项以确保它们已保存。

这可能吗?

目前,如果单击“保存”按钮,我的程序将挂起,或者如果单击角落中的红色X,则“首选项”窗口将不会重新打开。

这是我当前的首选项窗口代码,甚至不确定这是不必要的:

import Cocoa
protocol PreferencesWindowDelegate {
func preferencesDidUpdate()
}
class PreferencesWindow: NSWindowController, NSWindowDelegate {
    @IBAction func ResetPref(sender: NSButton) {
    UserName.stringValue = "Name"
    UserEmail.stringValue = "Email"
    ManEmail.stringValue = "Man. Email"
    SSEmail.stringValue = "SS Email"
}
@IBOutlet var SSEmail: NSTextField!
@IBOutlet var ManEmail: NSTextField!
@IBOutlet var UserEmail: NSTextField!
@IBOutlet var UserName: NSTextField!
@IBAction func SavePref(sender: NSButton) {
    }
override var windowNibName : String! {
    return "PreferencesWindow"
        }
    override func controlTextDidBeginEditing(_: NSNotification){
    func controlTextDidChange(obj: NSNotification){  
        }
func windowDidLoad() {
    super.windowDidLoad()
    self.window?.center()
    self.window?.makeKeyAndOrderFront(nil);
    NSApp.activateIgnoringOtherApps(true);
}
var delegate: PreferencesWindowDelegate?       
        func controlTextDidEndEditing(obj: NSNotification){}
func windowWillClose(notification: NSNotification) {
    delegate?.preferencesDidUpdate()
    }
}
}

感谢任何指导,因为这是我第一次在Swift工作!

1 个答案:

答案 0 :(得分:0)

您的preferencesDidUpdate()函数是否已定义?

您通常使用NSUserDefaults保存首选项,这会将首选项保存到.plist文件。这是可可的方式。要保存NSUSerDefaults,只需执行

let defaults = NSUserDefaults.standardUserDefaults()

    defaults.setObject(myValue, forKey: myKey)