Как добавить средство выбора / открытия файлов в какао с помощью Interface Builder? - PullRequest
9 голосов
/ 27 января 2009

Мне интересно, как заставить кнопку или поле ввода в Интерфейсном Разработчике реагировать так, чтобы при щелчке он открывал диалоговое окно файла и позволял вам выбрать один или несколько файлов и поместить их в указанный массив / таблицу ... .

Как только кнопка нажата и файлы выбраны (это кажется довольно тривиальной вещью), я думаю, что она уже будет содержать некоторый массив (например, массив с путями к выбранным файлам), так что я рассмотрел это. Мне нужно только знать, как связать кнопку с селектором файлов и каким образом селектор файлов доставляет мне файлы (или пути к файлам), чтобы я мог перенаправить их в массив

Есть ли простой способ сделать это, и что более важно; есть ли селектор файлов thingie или я должен сделать это с помощью XCode вместо Interface Builder?

Ответы [ 3 ]

10 голосов
/ 27 января 2009

Это должно быть сделано в Xcode. Код здесь должен работать нормально.

Просто подключите кнопку к методу, используя IB, и используйте этот пример как руководство к тому, что добавить в метод.

Существует также много полезной справки WRT NSOpenPanel на Cocoadev , включая советы по открытию панели как листа вместо модального окна.

Конечно, вы всегда должны читать документацию Apple .

7 голосов
/ 21 февраля 2012

Я нашел эту страницу при поиске, как открыть окно открытия файла в Какао. С выпуском OS X 10.7 многие примеры, на которые есть ссылки, устарели. Итак, вот пример кода , который избавит вас от некоторых предупреждений компилятора:

// -----------------
// NSOpenPanel: Displaying a File Open Dialog in OS X 10.7
// -----------------

// Any ole method
- (void)someMethod {
  // Create a File Open Dialog class.
  NSOpenPanel *openDlg = [NSOpenPanel openPanel];

  // Set array of file types 
  NSArray<NSString*> *fileTypesArray = @[@"jpg", @"gif", @"png"];

  // Enable options in the dialog.
  [openDlg setCanChooseFiles:YES];    
  [openDlg setAllowedFileTypes:fileTypesArray];
  [openDlg setAllowsMultipleSelection:YES];

  // Display the dialog box.  If OK is pressed, process the files.
  if ([openDlg runModal] == NSModalResponseOK) {
    // Get list of all files selected
    NSArray<NSURL*> *files = [openDlg URLs];

    // Loop through the files and process them.
    for (NSURL *file in files) {
      // Do something with the filename.
      NSLog(@"File path: %@", [file path]);
    }
  }
}
5 голосов
/ 27 января 2009

Интерфейсный Разработчик для проектирования и связывания интерфейса. Вы хотите открыть файлы и поместить их в массив, который безопасно находится на стороне Xcode. Пусть действие кнопки покажет NSOpenPanel и передаст результаты источнику данных вашей таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...