«возвращать имя файла для этой метки» не имеет смысла. Функция или метод возвращает значение только той функции или методу, которые ее вызвали; это единственное, что когда-либо означает «возвращение» в C и Objective-C. Более того, когда функция или метод возвращает значение , оно заканчивается . Это больше не работает. возвращает управление программой функции или методу, вызвавшему ее.
Поэтому возвращать значение из цикла здесь не имеет смысла (метод будет обрабатывать только первое имя файла), а возвращать значение «объекту» не имеет смысла.
Вам необходимо создать выход к полю (метка является разновидностью NSTextField) в классе, который реализует fileChooser:
, и подключить этот вывод в редакторе пера. Затем вы можете использовать эту розетку, чтобы указать полю установить stringValue
.
(Важное примечание: в отличие от Cocoa Touch, большинство классов AppKit не используют формальные свойства. Вам нужно будет отправить в поле сообщение setStringValue:
.)
Розетки охвачены Руководством по основам какао , а документацию по NSTextField можно найти в справочной структуре AppKit .
Еще одна вещь: поскольку пользователь может и вполне разумно выбрать несколько файлов, вам следует рассмотреть этот случай. Простая установка строкового значения текстового поля для каждого имени файла по очереди оставит его отображающим только последнее имя файла в массиве - на самом деле мало чем отличается от установки его для первого имени файла и возврата. После того как текстовое поле заработало, вы должны заменить его табличным представлением.
Если, с другой стороны, вы не хотите поддерживать несколько файлов, то (1) почему? и (2) рассмотреть возможность установки открытой панели, чтобы запретить множественный выбор. (См. Мой ответ на ваш предыдущий вопрос для ссылок на документацию в этом направлении.) Затем вы можете предположить, что, когда ответ «ОК», массив имен файлов содержит ровно один элемент и полностью исключает цикл.