插件设置页
场景:在插件面板或单独设置页中提供一个开关或输入框,保存用户选择,并在下次启动或打开笔记本时读取(例如「是否显示面板」「API Key」等)。
步骤:
- 使用 NSUserDefaults 存储键值(如
my_addon_show_panel、my_addon_api_key)。 - 在 UI 中提供 UISwitch 或 UITextField;开关变化或确认时调用
setBoolForKey/setObjectForKey。 - 在需要读取的地方(如
notebookWillOpen延迟后、或工具栏按钮逻辑)用boolForKey/objectForKey读取。
示例:一个开关「是否在打开笔记本时自动显示面板」
// 读取var showPanel = NSUserDefaults.standardUserDefaults().boolForKey("my_addon_show_panel");// 默认 true,仅当从未设置时为 undefined,可做默认值处理if (showPanel === undefined) showPanel = true;
// 在设置 UI 中,用户切换 UISwitch 时:switchAction: function (sender) { NSUserDefaults.standardUserDefaults().setBoolForKey(sender.on, "my_addon_show_panel");}在 notebookWillOpen 中延迟 0.2 秒后根据 showPanel 决定是否 studyController.view.addSubview(self.panelView)(参见 生命周期与窗口)。
示例:一个文本输入(如 API Key)
// 读取var apiKey = NSUserDefaults.standardUserDefaults().objectForKey("my_addon_api_key");if (apiKey) textField.text = apiKey;
// 用户点击「保存」时:var newKey = textField.text;NSUserDefaults.standardUserDefaults().setObjectForKey(newKey, "my_addon_api_key");Application.sharedInstance().showHUD("已保存", self.window, 2);完整流程简述:
- 用 JSB.defineClass 定义设置页的 ViewController(或直接在插件实例上创建视图),包含 UISwitch、UITextField、保存按钮等。
- 在 viewDidLoad 或显示时从 NSUserDefaults 读取并填充控件。
- 在 UISwitch 的 action 或保存按钮的 action 中写回 NSUserDefaults。
- 插件主逻辑(如是否显示面板)在需要时从 NSUserDefaults 读取。