3

NSOpenPanelにチェックボックスを追加し、選択したファイルを受信したときにその状態を照会したいと思います。これどうやってするの?

さらに、現在のファイル選択に基づいてチェックボックスを有効または無効にできることが望ましいでしょう。

4

3 に答える 3

7

JoshuaNozziとMarkAlldrittの回答に基づく完全なソリューション:

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

NSOpenPanelは、NSSavePanelのサブクラスです-setAccessoryView:

于 2012-10-17T19:29:44.120 に答える
3

選択したファイルに基づいてチェックボックスを検証するにpanelSelectionDidChange:は、NSOpenSavePanelDelegateデリゲートプロトコルから実装する必要があります。次に、開いているパネルで現在選択されているファイルを照会し、必要に応じてチェックボックスの状態を更新できます。

于 2012-10-18T15:40:02.120 に答える