3

我想在 中添加一个复选框NSOpenPanel,然后在接收到所选文件时查询其状态。我怎样才能做到这一点?

此外,希望能够根据当前文件选择启用或禁用复选框。

4

3 回答 3

7

基于 Joshua Nozzi 和 Mark Alldritt 答案的完整解决方案:

NSOpenPanel* openDlg = [NSOpenPanel openPanel];
NSButton *button = [[NSButton alloc] init];
[button setButtonType:NSSwitchButton];
button.title = NSLocalizedString(@"I am a checkbox", @"");
[button sizeToFit];
[openDlg setAccessoryView:button];
openDlg.delegate = self;
[openDlg beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) 
{
    openDlg.delegate = nil; // TODO: Check if this is necessary
    if (result != NSFileHandlingPanelOKButton) return;
    BOOL checkboxOn = (((NSButton*)openDlg.accessoryView).state == NSOnState); 
    // Do something
}];

NSOpenSavePanelDelegate:

- (void)panelSelectionDidChange:(id)sender {
    NSOpenPanel *panel = sender;
    NSButton *button = (NSButton*)panel.accessoryView;
    // Update button based on panel selection
}
于 2012-10-19T13:21:12.483 回答
3

要根据所选文件验证您的复选框,您需要panelSelectionDidChange:NSOpenSavePanelDelegate委托协议中实现。然后,您可以查询打开面板的当前选定文件并根据需要更新您的复选框状态。

于 2012-10-18T15:40:02.120 回答
3

NSOpenPanel 是 NSSavePanel 的子类,它具有-setAccessoryView:.

于 2012-10-17T19:29:44.120 回答