Добавить элемент из finder

#objective-c #cocoa #finder

#objective-c #cocoa #поисковик

Вопрос:

У меня есть таблица с классическими кнопками — под ней. (на Mac) Я хочу нажать кнопку и немного открыть finder, чтобы выбрать файл, чтобы добавить его в таблицу.

Как я могу это сделать? Я искал ссылку на разработчика, но не нашел ее..

Ответ №1:

Использовать NSOpenPanel .

Руководство по работе с файлами и использованию открытых панелей см. в руководстве по управлению файлами приложения.

Например:

 - (IBAction)addFile:(id)sender
{
    NSInteger resu<
    NSArray *fileTypes = [NSArray arrayWithObject:@"html"];
    NSOpenPanel *oPanel = [NSOpenPanel openPanel];

    [oPanel setAllowsMultipleSelection:YES];
    [oPanel setDirectory:NSHomeDirectory()];
    [oPanel setCanChooseDirectories:NO];
    result = [oPanel runModal];

    if (result == NSFileHandlingPanelOKButton) {
        for (NSURL *fileURL in [oPanel URLs]) {
            // do something with fileURL
        }
    }
}
  

Другой пример с использованием листа:

 - (IBAction)addFile:(id)sender
{
    NSArray *fileTypes = [NSArray arrayWithObject:@"html"];
    NSOpenPanel *oPanel = [NSOpenPanel openPanel];

    [oPanel setAllowsMultipleSelection:YES];
    [oPanel setDirectory:NSHomeDirectory()];
    [oPanel setCanChooseDirectories:NO];
    [oPanel beginSheetModalForWindow:[self window]
        completionHandler:^(NSInteger result) {
        if (result == NSFileHandlingPanelOKButton) {
            for (NSURL *fileURL in [oPanel URLs]) {
                // do something with fileURL
            }
        }
    }];

}
  

Комментарии:

1. спасибо, но это создает новое окно. Я хотел бы тот, который скользит сверху.. Вы понимаете, что я имею в виду? Я не знаю, как это называется.

2. @pvinis Тогда тебе нужен лист. Вместо -runModal используйте – beginSheetModalForWindow:completionHandler: .

3. @pvinis Я отредактировал ответ и включил пример с использованием листа.