Как вы настроили вещи в своем приложении, вы не сможете поместить все содержимое NSDocument в текстовое представление.Предположим, у вас есть 10 элементов в табличном представлении и выбор элемента заполняет текстовое представление некоторым текстом.Вы не сможете иметь NSDocument для каждого из 10 элементов табличного представления внутри одного документа.
Вам нужно будет создать структуру данных, представляющую текстовый файл.Придумайте главу в книге или сцену в сценарии.В вашем подклассе NSDocument у вас будет массив этих структур данных.Когда вы сохраняете документ, вы сохраняете его как упаковщик файлов, который представляет собой каталог файлов, который в Finder выглядит как один файл.В оболочке файла будет один текстовый файл для каждого элемента в табличном представлении.Обратитесь к следующей статье, чтобы узнать больше об оболочках файлов:
Работа с оболочками файлов в Swift
Теперь вам нужно знать, как заполнить текстовое представление, когдавыбор таблицы меняется.Это болезненно делать с раскадровками Mac, потому что контроллер табличного представления и контроллер текстового представления являются отдельными сценами.Реализуйте метод делегата tableViewSelectionDidChange
в контроллере представления для табличного представления.Используйте свойство parent
, чтобы получить контроллер разделения представления.Используйте контроллер разделенного представления, чтобы получить контроллер текстового представления.Передайте выбранную строку в контроллер текстового представления и используйте его, чтобы получить правильный текстовый файл для отображения в текстовом представлении.
Контроллер разделенного представления должен хранить ссылку на NSDocument.Используйте свойство parent
для доступа к контроллеру разделенного представления из контроллера текстового представления.Имея доступ к контроллеру разделенного представления, вы можете получить доступ к документу, чтобы заполнить текстовое представление содержимым текстового файла, соответствующего выбранному элементу в табличном представлении.