2015-06-30 3 views
0

У меня есть два оконных контроллера (с их собственными контроллерами представлений) на раскадровке.Использование нескольких окон с раскадровки (разработка Mac OS X)

В одном окне у меня есть основная программа, основной текстовый редактор с NSTextView. В другом окне у меня есть одна кнопка.

Я узнал, как получить окно для отображения, связав его с пунктом меню. Оно работает.

Главное окно связано с моим классом ViewController по умолчанию. Второе окно также связано с классом ViewController и имеет свою кнопку, связанную с IBAction в классе ViewController.

У меня есть простой код в IBAction, который в основном сообщает NSTextView об изменении размера шрифта на гораздо больший шрифт. Я подтвердил, что сам код работает при вызове другими способами.

Эта кнопка работает, BUT использует совершенно другой экземпляр класса ViewController. Таким образом, в результате: размер текста не изменяется.

Итак, мой главный вопрос: Как получить IBAction в одном окне, чтобы повлиять на объект в другом окне.

Надеюсь, я сделал в порядке работу по разъяснению себя. Имейте в виду, что это мой первый вопрос о переполнении стека :) Я старался изо всех сил исследовать этот вопрос, но в основном нашел информацию о разработке iOS и использовании XIB-файлов.

ответ

0

Похоже, что у вас есть два окна с одним и тем же классом контроллера, но вы хотите, чтобы что-то происходит в одном окне, чтобы повлиять на другое окно. Самый простой способ - с уведомлениями. Когда кнопка нажата в одном окне, выдается уведомление о том, что все экземпляры ViewController получают и отвечают, изменяя размер шрифта по мере необходимости. Вы также можете изучить настройку пользователя по умолчанию при нажатии кнопки и использовании привязок, чтобы размер шрифта текстового поля был привязан к текущему по умолчанию.

+0

Уведомления, похоже, делают трюк. Благодаря! Есть ли способ отправить объект через NSNotification. Например, скажем, у меня вместо колокольчика был цветной колокольчик. Есть ли способ отправить значение NSColor цвета через NSNotification? –

+0

Вы можете передать словарь в параметре userInfo, который может содержать больше всего, что вы хотите. https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNotification_Class/index.html#//apple_ref/occ/instm/NSNotification/initWithName:object:userInfo: – theMikeSwan

+0

Спасибо! Отличные предложения, но сегодня я нашел кое-что, что будет работать еще лучше для меня: общие экземпляры :) –

Смежные вопросы