это вполне возможно, но есть несколько вещей, которые вам нужно сделать. Я предполагаю, что вы уже знакомы с подключением розеток к объектам в вашей XIB, поэтому первое, что вам нужно сделать, это создать собственные представления в вашей XIB и подключить их к розеткам в вашем appDelegate. Я предлагаю перетащить один из видов в окно, а другой - за окном. Таким образом, когда окно загружается, оно уже имеет одно из ваших пользовательских представлений в качестве подпредставления. Это только облегчает начало работы.
Затем вы напишите IBAction в appDelegate и подключите его к своей кнопке. Предполагая, что одно из пользовательских представлений уже размещено окном, IBAction должен отправить сообщение replaceSubviewWith аниматору содержимого viewView, подобному этому [[window.contentView animator] replaceSubview:firstView with:secondView];
, где firstView и secondView - это указатели / выходы, которые вы объявили и подключили к представлениям в ваш XIB.
Это отправляет прокси-серверу аниматора представления содержимого окна сообщение, в котором говорится, что оно должно заменить старое подпредставление новым. Причиной отправки сообщения на прокси-сервер аниматора представления (а не самого представления) является то, что переход будет выполнен с использованием по умолчанию CATransitionAnimation. Потому что вы хотите, чтобы оно было анимированным, верно?
Причина, по которой вы не должны удалять одно подпредставление, а затем добавлять другое, заключается в том, что анимация удаления подпредставления на самом деле довольно сложна и требует реализации метода делегата animationDidEnd. Это связано с тем, что выполнение анимации для представления, удаленного из иерархии представления, не имеет смысла. Я не знаю, почему Apple не изменила это, но сейчас это будет одна из самых сильных сторон CoreAnimation.
Дайте мне знать, если это поможет. Я с удовольствием уточню! И добро пожаловать в Какао!