0

Я пытаюсь понять, как настроить NavigationController. Я не понимаю, почему этот код работает как с pushViewController AND presentModalViewController. Я думал, что это должно быть одно или другое.Можете ли вы объяснить, почему эта настройка NavigationController работает

Для контекста это UIViewController, который создает UIImagePickerController. После этого два контроллера представлений, первый (EditPictureViewController) редактирует сам образ, а второй редактирует свойства. Поверьте, я должен использовать presentModalViewController.

... также есть способ не отклонять контроллер Modal View, чтобы у меня была кнопка повторного изображения на EditPictureViewController?

Спасибо.

- (void)viewDidLoad { 

    [super viewDidLoad]; 
    self.navController = [[UINavigationController alloc] init]; } 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    [self dismissModalViewControllerAnimated:NO]; 
    EditPictureViewController *viewController = [[EditPictureViewController alloc] initWithImage:image]; 
    [viewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
    [self.navController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
    [self.navController pushViewController:viewController animated:NO]; 
    [self presentModalViewController:self.navController animated:YES]; } 

ответ

0

Это подталкивает EditPictureViewController в стек представлений NavigationController.

[self.navController pushViewController:viewController animated:NO]; 

Тогда вы представить NavigationController здесь:

[self presentModalViewController:self.navController animated:YES]; 

Я имею в виду, все, что вы делаете, представляя модальное вид из контроллера представления и что модальный случается быть NavigationController.

+0

ах. позвольте мне убедиться, что я понимаю. Первая строка добавляет его в контроллер навигации, тогда как вторая строка показывает навигационный контроллер. Это правильно? – Curt

+0

у тебя это чувак. – rocky

+0

cool thx. ты победил! – Curt

0

Установки, которые у вас есть, не являются «обычным способом». Стандартной парадигмой было бы создание контроллера навигации в методе didFinishPickingMediaWithInfo: и установить его корневой контроллер на viewController, а не нажимать его. «pushing» как переход к следующему контроллеру, тогда как то, что вы делаете, просто устанавливает контроллер корневого представления нестандартным образом. Также вы должны использовать текущие методы для представления и отклонения контроллеров модального представления - те, которые вы используете амортизируются. Я не уверен, что вам нужно установить оба этих стилей перехода либо. Попробуйте комментируя одну из них, и посмотреть, если он все еще работает.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    [self dismissViewControllerAnimated:NO completion:nil]; 
    EditPictureViewController *viewController = [[EditPictureViewController alloc] initWithImage:image]; 
    self.navController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
    [viewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
    [self.navController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
    [self presentViewController:self.navController animated:YES completion:nil]; 

}