#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 Я отредактировал ответ и включил пример с использованием листа.