Переключить представления XIB - Cocoa Mac - PullRequest
1 голос
/ 25 декабря 2010

Я довольно новичок в кодировании и хотел бы знать, как переключать представления XIB одним нажатием кнопки. Есть ли еще способ добавить анимацию при переключении?

Спасибо

Kevin

Ответы [ 2 ]

5 голосов
/ 26 декабря 2010

это вполне возможно, но есть несколько вещей, которые вам нужно сделать. Я предполагаю, что вы уже знакомы с подключением розеток к объектам в вашей XIB, поэтому первое, что вам нужно сделать, это создать собственные представления в вашей XIB и подключить их к розеткам в вашем appDelegate. Я предлагаю перетащить один из видов в окно, а другой - за окном. Таким образом, когда окно загружается, оно уже имеет одно из ваших пользовательских представлений в качестве подпредставления. Это только облегчает начало работы.

Затем вы напишите IBAction в appDelegate и подключите его к своей кнопке. Предполагая, что одно из пользовательских представлений уже размещено окном, IBAction должен отправить сообщение replaceSubviewWith аниматору содержимого viewView, подобному этому [[window.contentView animator] replaceSubview:firstView with:secondView];, где firstView и secondView - это указатели / выходы, которые вы объявили и подключили к представлениям в ваш XIB.

Это отправляет прокси-серверу аниматора представления содержимого окна сообщение, в котором говорится, что оно должно заменить старое подпредставление новым. Причиной отправки сообщения на прокси-сервер аниматора представления (а не самого представления) является то, что переход будет выполнен с использованием по умолчанию CATransitionAnimation. Потому что вы хотите, чтобы оно было анимированным, верно?

Причина, по которой вы не должны удалять одно подпредставление, а затем добавлять другое, заключается в том, что анимация удаления подпредставления на самом деле довольно сложна и требует реализации метода делегата animationDidEnd. Это связано с тем, что выполнение анимации для представления, удаленного из иерархии представления, не имеет смысла. Я не знаю, почему Apple не изменила это, но сейчас это будет одна из самых сильных сторон CoreAnimation.

Дайте мне знать, если это поможет. Я с удовольствием уточню! И добро пожаловать в Какао!

3 голосов
/ 25 декабря 2010

Простой способ сделать это - использовать таблицу NSTabView - вы можете выложить все в IB, так что боль будет минимальной.

...