Popping to a specific viewcontroller in a navigation stack

后端 未结 4 1602
Happy的楠姐
Happy的楠姐 2021-02-10 07:47

I have a come across a piece of code to pop to a specific viewcontroller in a navigation stack as below

for (UIViewController* viewController in self.navigationC         


        
4条回答
  •  北海茫月
    2021-02-10 07:54

    //This for loop iterates through all the view controllers in navigation stack.   
    for (UIViewController* viewController in self.navigationController.viewControllers) {
    
        //This if condition checks whether the viewController's class is MyGroupViewController 
        // if true that means its the MyGroupViewController (which has been pushed at some point)
        if ([viewController isKindOfClass:[MyGroupViewController class]] ) {
    
            // Here viewController is a reference of UIViewController base class of MyGroupViewController 
            // but viewController holds MyGroupViewController  object so we can type cast it here
            MyGroupViewController *groupViewController = (MyGroupViewController*)viewController;
            [self.navigationController popToViewController:groupViewController animated:YES];
        }
    }
    

    Also you can do like this

    if ([viewController isKindOfClass:[MyGroupViewController class]] ) {
                [self.navigationController popToViewController:viewController  animated:YES];
     }
    

    Swift code

    //Itrate through all the view controllers in navigation stack
    for vc in self.navigationController!.viewControllers {
      // Check if the view controller is of MyGroupViewController type
      if let myGropupVC = vc as? MyGroupViewController {
        self.navigationController?.popToViewController(myGropupVC, animated: true)
      }
    }
    

提交回复
热议问题