Могу ли я вставить контроллер вида в UINavigationController в бэкэнде - PullRequest
0 голосов
/ 31 мая 2011

Контроллер корневого представления моего приложения является контроллером навигации, а ImagePickerController представлен как модальный контроллер представления.После того, как изображение выбрано, я хочу передать контроллер представления корневому навигационному контроллеру до , когда ImagePickerController будет закрыт.Это возможно?Спасибо за любые советы :)

===================Я пытался выдвинуть новый viewcontroller, прежде чем ImagePickerController будет удален.Но это не выдвигается, кажется, что UINavigationController может использоваться, чтобы выдвинуть / выдвинуть, только если это - текущий контроллер вида сверху.@balaИ если я сначала отклоню ImagePickerController, а затем нажму на контроллер представления, будет две анимации.раздражает ~

Ответы [ 3 ]

1 голос
/ 31 мая 2011

Хорошо, если вы просите нажать контроллер представления поверх текущего контроллера представления, чем вы можете это сделать

[self.navigationController pushViewController:controller animated:YES];

Когда средство выбора изображений отклонено в этом методе

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    ...
    [self.navigationController pushViewController:controller animated:YES];
    ....
}

И если вы просите показать контроллер корневого представления, то вы можете использовать этот метод

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

Но если вы просите выдвинуть контроллер представления в конец стека, то нет доступных документированных методов.как таковой.

0 голосов
/ 31 мая 2011

Чтобы выдвинуть контроллер представления из корневого контроллера представления, вам просто нужно настроить делегата.В основном, в заголовок вашего контроллера модального представления вставьте

id delegate;

и

@property (nonatomic, assign) id delegate;

Синтезируйте его в файл реализации.

Когда вы создаете контроллер модального представления вбыть представлен, установить myModalViewController.delegate = self;.Теперь вы можете вызывать методы в вашем корневом контроллере представления из вашего делегата.Например, у вас мог бы быть метод в вашем корневом контроллере представления, называемый pushVC, поэтому, прежде чем вы уволите свой контроллер модального представления, вы можете вызвать из него [self.delegate pushVC];, который выполнит все, что у вас есть в этом методе, например кодвыдвинуть контроллер вида из-под модального контроллера вида.Возможно, вы захотите установить @protocol для вашего метода делегата в вашем контроллере модального представления, чтобы смягчить любые предупреждения, но он должен работать без него

0 голосов
/ 31 мая 2011

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

[self.navigationController pushViewController:newController animated:NO]; 
//Now dismiss imagepicker controller
[picker.parentViewController dismissModalViewControllerAnimated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...