Исправьте иерархию UINavigation с помощью UIImagePickerController - PullRequest
0 голосов
/ 17 июня 2011

У меня есть панель вкладок + приложение, основанное на навигации, и я хотел бы запустить два представления спина к спине с правой стороны навигационной кнопки основного UIViewController без слишком большого количества очевидных переходов. У меня проблемы с поиском правильного способа структурировать и содержать такую ​​схему навигации.

Первый вид / контроллер, который мне нужно показать, это UIImagePickerController, который должен отображаться как модальный. Если вы попытаетесь вставить его в UINavigationController, вы получите исключение. Как только сборщик уволен, я хочу показать дочерний UIViewController. Когда этот дочерний контроллер будет удален, я вернусь к отображению моего основного UIViewController с вкладками.

Вот как у меня теперь это структурировано:

Tab Bar 
   -> (tab 1) UINavigationController -> UIViewController (main content for tab 1)
   -> (tab 2) UINavigationController -> UIViewController (main content for tab 2)

MainContent1Controller:

- (void)onNavigationItemTapped {

  // Launch the picker to take pictures
  UIImagePickerController *picker = [[UIImagePickerController alloc] init];

   // configure picker options including:
  picker.delegate = self;

  [self presentModalViewController:picker animated:YES];
  [picker release];
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // Process the photo taken

    // unlink this view controller as the delegate
    picker.delegate = nil; 

    // Dismiss the UIImagePickerController 
    [self dismissModalViewControllerAnimated:YES];                          

    // Create the 2nd controller and show - this doesn't work and the child controller is not visible for some reason
    ChildController *child = [[ChildController alloc] initWithNibName:...];
    [self presentModalViewController:child animated:YES];
    [child release];
}   

Есть предложения?

1 Ответ

0 голосов
/ 17 июня 2011

Вы, вероятно, должны сделать это,

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // Process the photo taken

    // unlink this view controller as the delegate
    picker.delegate = nil; 

    // Create the 2nd controller and show - this doesn't work and the child controller is not visible for some reason
    ChildController *child = [[ChildController alloc] initWithNibName:nil bundle:nil];
    [self.navigationController pushViewController:child animated:NO];
    [child release];

    // Dismiss the UIImagePickerController 
    [self dismissModalViewControllerAnimated:YES];                          
}   

Таким образом вы добавляете child к иерархии навигации и закрываете средство выбора изображений. Одна анимация покажет, что сборщик изображений отклонен, чтобы показать child контроллер.

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