2014-03-19 5 views
0

У меня есть контроллер навигации, который нажимает некоторый элемент управления представлением. Он отлично работает, но я не могу ясно стек навигации контроллер и поэтому я получил предупреждение памяти ...Очистить навигационную панель стека при нажатии ViewController

Вот что я хочу сделать:

Viewcontroller 1 : HomeViewController 
ViewController 2 : LandingPageViewController 
ViewController 3 : DetailsInnovViewController 

homeViewController -> Push -> landingPageViewController -> Push -> detailsPageViewController -> Push -> homeViewController 

Это работает, но я хочу новый homeViewController, а не старый. Si его можно удалить из навигационного контроллера.

Вот как я нажимаю homeViewController из detailsPageViewController с моим navigationController:

- (void)pushHomeVC 
{ 
    [LoginModel incrementCountedInnov]; 

    for (UIViewController* vc in self.viewControllers) { 
     if ([vc isKindOfClass:[DetailsInnovViewController class]]) { 
      DetailsInnovViewController* dpvc = (DetailsInnovViewController*)vc; 
      [dpvc bannerHide]; 
      break; 
     } 
    } 

    for (UIViewController* vc in self.viewControllers) { 
     if ([vc isKindOfClass:[HomeViewController class]]) { 
      [self popToRootViewControllerAnimated:NO]; 
      [self pushViewController:vc animated:YES]; 
      break; 
     } 
    } 
} 

Thx за помощь!

+0

К сожалению HomeViewController не установлено как корень ... – testoverblaireau

ответ

0

Я нашел, как это сделать:

- (void)pushHomeVC 
{ 
    [LoginModel incrementCountedInnov]; 

    for (UIViewController* vc in self.viewControllers) { 
     if ([vc isKindOfClass:[DetailsInnovViewController class]]) { 
      DetailsInnovViewController* dpvc = (DetailsInnovViewController*)vc; 
      [dpvc bannerHide]; 
      break; 
     } 
    } 

    HomeViewController* homeVC = (HomeViewController*)[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"home-vc"]; 
    [self pushViewController:homeVC animated:YES]; 
} 

И мой метод pushViewController:

- (void)pushViewController:(UIViewController*)viewController animated:(BOOL)animated 
{ 
    @synchronized(self) { 
     if (isTransitioning == YES) { 
      [futureViewControllers addObject:viewController]; 
     } else { 
      isTransitioning = YES; 
      if (self.viewControllers.count > 6) { 
       [super popToRootViewControllerAnimated:NO]; 
      } 
      [super pushViewController:viewController animated:(BOOL)animated]; 
     } 
    } 
} 

Thx!

2

Я знаю, что это старый вопрос, но я недавно имел подобную проблему и обнаружил, что это решение работает для меня:

[navigationController pushViewController:viewController animated:YES]; 
[navigationController setViewControllers:@[navigationController.topViewController]]; 
Смежные вопросы