2016-08-07 4 views
0

Я думаю, что я действительно не понимаю, как управлять видами и окнами через диспетчеры просмотра и контроллеры окон в раскадровках.Подкласс NSWindowController или NSViewController в OS X

Вот моя проблема: У меня есть окно с mainView, которым управляет myMainViewController. Все, что я хочу сделать, это сделать кнопку в mainView, чтобы показать anotherWindow (содержащий другое представление) и отправить данные из myMainViewController в другой. Используя раскадровку, я перетащил оконный контроллер (со своим видом) и подключил кнопку к окну (и performsegue). Но как я могу получить доступ к элементам управления anotherView из myMainViewController?

  • Должен ли я создать класс anotherWindowController или класс anotherViewController?
  • И второй случай, как я могу получить к нему доступ через myMainViewController?
  • Должен ли я создать их оба, даже если мне нечего было обойтись в другом окне (только его представление)?

В принципе, кнопка mainView должна отправить изображение и строку в другой вид, встроенный в anotherWindow. Я уверен, что это очевидно, но я немного запутался с документацией компании Apple, не очень понятно ...

Благодаря

Джош

ответ

0

Похоже, что вам нужно: 1) создать новый пользовательский вид контроллер (новый класс, к югу причислять nsviewcontroller) 2) создать два свойства в нем (один для изображения, другое для строки)

var myImage: NSImage! 
    var myText: NSString! 

3) после нажатия кнопки, в цели, необходимо создать новый объект ваших новый класс в качестве переменного, и через него доступ к создаваемым свойствам

var secondController = SecondViewController() 
    secondController.myImage = //set your image 
    SecondController.myText = //set your string 

4), а теперь представить свой второй контроллер представления (используя presentViewController), и теперь вы можете использовать необходимые свойства в методе viewDidLoad открытого ViewController

+0

Tanks но, видимо, использование currentViewController противоречит использованию segue. Фактически, я, наконец, справился с этой проблемой. Мне просто нужно было выполнить prepareforsegue в контроллере исходного представления и проверить 'if let vc = segue.destinationController.contentViewController как? AnotherViewController ' – Joshua

+0

Да, эта опция является хорошим решением, если вы используете визуальный редактор, и если ваша кнопка должна просто открыть контроллер без каких-либо других действий, мой метод более унифицирован. – KostiaZzz

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