модальный вид iPhone внутри другого модального вида? - PullRequest
3 голосов
/ 21 января 2010

Мое приложение использует модальное представление, когда пользователи добавляют новый foo. Пользователь выбирает тип foo, используя это модальное представление. В зависимости от того, какой тип выбран, пользователь должен запросить дополнительную информацию.

Я бы хотел использовать другое модальное представление, чтобы запросить эту дополнительную информацию. Я попытался создать новый модальный вид, подобный первому (который прекрасно работает), и это приводит к переполнению стека / ошибке «Загрузка кадров стека» в Xcode.

Я поступаю так совершенно неправильно, т. Е. Действительно ли это просто плохая идея? Должен ли я переосмыслить сам интерфейс?

UINavigationController *navigationController = [[UINavigationController alloc]   
    initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];

Ответы [ 3 ]

3 голосов
/ 22 января 2010

Fixed. Я получил желаемое поведение, передав второй контроллер представления в UINavigationController первого контроллера представления.

создание 1-го модального вида

FooAddController *addController = [FooAddController alloc]
    initWithNibName:@"FooAddController" bundle:nil];
addController.delegate = self;
addController.foo = newFoo;
UINavigationController *navigationController = [[UINavigationController alloc]
    initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];
[addController release];

создание 2-х модальных представлений (в FooAddController)

FooAddSizeViewController *addSizeController = [[FooAddSizeViewController alloc]
    initWithNibName:@"FooAddSizeViewController" bundle:nil];
addSizeController.delegate = self;
addSizeController.foo = self.foo;
[self.navigationController pushViewController:addSizeController animated:YES];
[addSizeController release];
2 голосов
/ 21 января 2010

Вам нужно позаботиться о том, какой экземпляр вы вызываете presentModalViewController, когда вы имеете дело с несколькими уровнями модальных контроллеров. Предположим, у вас есть:

[myControllerA presentModalViewController:myControllerB animated:YES];

В следующий раз, когда вы хотите отобразить модальный контроллер, когда B имеет фокус, вы должны вызвать

[myControllerB presentModalViewController:myControllerC animated:YES];

, чтобы правильно установить родительский контроллер. Тогда иерархия контроллеров A-> B -> C

0 голосов
/ 21 января 2010

Вы пытались звонить presentModalViewController на self.navigationController в обоих шагах?

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