Popping to a specific viewcontroller in a navigation stack

后端 未结 4 1611
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 08:01

    The view controllers of a navigation controller stack are being enumerated. Since these view controllers can be of any kind (but will always inherit from UIViewController), the generic UIViewController is used. However, the compiler will not know what type that view controller is, so it is being casted to a MyGroupViewController. When that happens, the compiler knows what the type of class and you can send it messages that only apply to that class.

    In this case it is kind of unnecessary, as it could be simplified to this:

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

    Short answer: it changes a variable type to the type specified in the parentheses to avoid compiler warnings.

提交回复
热议问题