2016-08-05 8 views
0

У меня есть код, чтобы хранить ссылки на 3 Viewcontrollers (скажем, класс TypeA) на стеке контроллера UINavigation, а затем все этот вид контроллеры вылезли из стека.сбоя при попытке контроллеров толчка просмотра с анимацией

Позже на кнопку мыши, я пытаюсь нажать 2 viewcontrollers нормально, а затем на 3-й контроллер представления Я использую следующий метод.

[self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; 

навигация происходит таким образом classTypeA VC1-- > classTypeA VC2 --> classTypeA VC3 --> "class TypeB VC" --> classTypeA VC1-- > classTypeA VC2 --> classTypeA VC3 --> "class TypeB VC" --> classTypeA VC1-- > classTypeA VC2 --> classTypeA VC3 --> "class TypeB VC" (он обналичивает в этой точке).

Этот код работает хорошо, когда пользователь перемещается медленно, но если пользователь нажимает кнопку быстрее это происходит сбой, за исключением:

, истекающее приложение из-за неперехваченное исключением «NSInvalidArgumentException», причина: «Pushing тот же вид контроллера экземпляр более одного раза не поддерживается ».

Может кто-то помочь с этим?

+0

добавить тег языка объективна C или быстры –

ответ

0

Похоже, вы ставите два экземпляра viewcontroller в yourNavigationViewController поэтому перед нажатием на viewcontroller если вы должны удалить экземпляр присутствует как это -

func RemoveViewControllersFromNavigationController(vcClass:AnyClass)->Void 
{ 

     let array = self.navigationController?.viewControllers 


     if array != nil 
     { 
      for aviewcontroller in array! 
      { 
       if aviewcontroller.isKindOfClass(vcClass) 
       { 
        self.navigationController?.viewControllers.removeAtIndex((self.navigationController?.viewControllers.indexOf(aviewcontroller))!) 
       } 
      } 

     } 

} 

вызов выше метода перед тем подталкивая viewcontroller

let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) 
      let vc = mainStoryboard.instantiateViewControllerWithIdentifier("EventDetailViewController") as! EventDetailViewController 
        RemoveViewControllersFromNavigationController(EventDetailViewController) 
      self.navigationController?.pushViewController(vc, animated: true) 
+0

пожалуйста, смотрите на вопрос, я пытаюсь нажать 3 просмотр контроллеров же ClassType ... ваш код может быть использован только при нажатии только на e Viewcontroller, что, если вы хотите нажать 3 Viewcontrollers, которые имеют одни и те же типы классов, но разные экземпляры? –