2013-04-26 4 views
-1

У меня есть 3 контроллера вида «Корень», «Родитель» & «Ребенок». Теперь я подталкиваю ребенка к методу родителя. Теперь, когда я хочу, чтобы совать родитель с точки зрения ребенка через следующий код:Не отображается в родительском представлении с контроллера детского просмотра

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle: nil]; 
Parent *svc = [storyboard instantiateViewControllerWithIdentifier:@"Parent"]; 

[self.navigationController popToViewController:svc animated:YES]; 

Это показывает ошибку:

'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.' 

Когда я пишу следующий код вместо этого, он выскочить на пустой экран ! :

[self.navigationController popViewControllerAnimated:YES]; 

И когда я пишу следующий код, он попадает в Корень. :

[self.navigationController popToRootViewControllerAnimated:YES]; 

Но я хочу точно посмотреть на Родительский взгляд. Как я могу это сделать?

Заранее спасибо.

Нажмите пример из класса Parent:

-(void)Custom{ 

if([info isEqualToString:@"message"]){ 

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle: nil]; 

Child *cd = [storyboard instantiateViewControllerWithIdentifier:@"Child"]; 

[self.navigationController pushViewController:cd animated:YES]; 
    } 
} 

Поп пример из ребенка:

-(void)viewDidLoad{ 

[super viewDidLoad]; 

[self sendMessage] 

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle: nil]; 
Parent *svc = [storyboard instantiateViewControllerWithIdentifier:@"Parent"]; 

[self.navigationController popToViewController:svc animated:YES]; 

} 

ответ

1

Yo не может выскочить к контроллеру зрения ребенка, потому что не добавляется в стек навигации контроллера. (Вы делаете новый экземпляр Ребенка, когда вы звоните [storyboard instantiateViewControllerWithIdentifier:@"Child"];)

Если вы нажмете «Родитель», и после этого вы нажмете дочерний элемент на родителя, и если вы позвоните от Ребенка [self.navigationController popViewControllerAnimated:YES], он должен работать.

+0

К сожалению я написал несколько неправильного примера в этом вопросе. Я отредактировал это. проверьте сейчас. – Leo

+0

Мой ответ действителен, но можете ли вы добавить код, в который вы нажимаете и отображаете контроллеры представлений? – danypata

+0

Я добавил код нажатия и выскакивания в разделе вопросов. Пожалуйста, проверьте сейчас. – Leo

0

Для выскакивает ваш контроллер представления, можно использовать следующий код ...

NSArray *viewContrlls=[[self navigationController] viewControllers]; 
     for(int i=0;i<[ viewContrlls count];i++){ 
      id obj=[viewContrlls objectAtIndex:i]; 
      if([obj isKindOfClass:[<yourViewController> class]]){ 

       [[self navigationController] popToViewController:obj animated:YES]; 
       return; 
      } 
     } 

Надеется, что это помогает .. :)

Смежные вопросы