Как заменить контроллер модального вида? - PullRequest
4 голосов
/ 29 марта 2010

Я использую модальный контроллер вида, чтобы позволить пользователю выбрать запись адресной книги и адрес электронной почты. Объект ABPeoplePickerNavigationController отображается через presentModalViewController:animated:

[self presentModalViewController:picker animated:YES];

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

Я пробовал различные подходы в peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier:, чтобы отменить выбор и установить свой собственный контроллер композиции в качестве модального представления. Я могу сделать это любым способом, но никогда не исчезает плавно от средства выбора к контроллеру композиции - если я не сделаю контроллер композиции модальным диалоговым окном средства выбора, и в этом случае средство выбора снова появляется, когда я отклоняю композицию контроллер. Я тоже этого не хочу.

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

1 Ответ

1 голос
/ 29 марта 2010

Добавьте композиционный контроллер как подпредставление вашего выбора. Установите его альфа на 0, чтобы он был прозрачным. Затем используйте анимационный блок, чтобы постепенно оживить его альфа до полного:

// Initially set alpha to 0    
[myCompositionView setAlpha:0];

// Later when you want to show the view, animate the alpha to 1.0
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[myCompositionView setAlpha:1.0];
[UIView commitAnimations];
...