如何在页面视图控制器中获取当前视图控制器

iPh*_*lly 7 iphone objective-c uiviewcontroller ipad ios

我想在页面视图控制器中获取当前的视图控制器.怎么做 是否有一些代表打电话或什么.

小智 24

我刚遇到同样的问题.在您更改页面后,当前控制器看起来像列表中的最后一个.这对我有用,但我不知道它是否总是如此.

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
    UIViewController *vc = [pageViewController.viewControllers lastObject];
}
Run Code Online (Sandbox Code Playgroud)


mer*_*nix 0

如果您位于任何 UIView 类(如 UIButton、UITable 或任何其他子类)中,该类是 UIViewController.view (或其任何 subView.subView.subView...)的子视图

您可以检查 superVew(s) 链中是否有 UIViewController,并在找到 UIViewController 时停止

像这样的东西:

UIViewController* controllerFound = nil;
for (UIView* next = [self superview]; next; next = next.superview) {
    UIResponder* nextResponder = [next nextResponder];
    if ([nextResponder isKindOfClass:[UIViewController class]]) {
        controllerFound = (UIViewController*)nextResponder;
    }
}
Run Code Online (Sandbox Code Playgroud)