Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在页面视图控制器中获取当前视图控制器_Iphone_Objective C_Ios_Ipad_Uiviewcontroller - Fatal编程技术网

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

Iphone 如何在页面视图控制器中获取当前视图控制器,iphone,objective-c,ios,ipad,uiviewcontroller,Iphone,Objective C,Ios,Ipad,Uiviewcontroller,我想在页视图控制器中获取当前的视图控制器。如何做到这一点。它是否有要调用的委托或什么。如果您在任何UIView类(如UIButton、UITable或任何其他子类)中,该类是UIViewController.view(或其任何子视图。子视图。子视图…的子视图)的子视图 您可以检查superVew链中是否有UIViewController,并在找到UIViewController时停止 大概是这样的: UIViewController* controllerFound = nil; for (UI

我想在页视图控制器中获取当前的视图控制器。如何做到这一点。它是否有要调用的委托或什么。

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

您可以检查superVew链中是否有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;
    }
}

我也有同样的问题。看起来当前控制器是您更改页面后列表中的最后一个控制器。这对我很有用,但我不知道这是否总是真的

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

尝试在pageViewController.ViewController中获取第一个视图控制器

    if let vc = pageViewController.viewControllers?[0] {
        ... vc is current controller...
    }
如果要处理页面更改,请使用委托方法:

func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
    if let vc = pageViewController.viewControllers?[0] {
        ... vc is current controller...
    }
}

也许这可以帮助我,我不知道这一点,因为我没有使用这种方法。我需要在“页面视图控制器”中查找,您是否可以发布任何与此相关的内容。@mnl失败的是什么?这对我来说很有效,所以如果有一个bug我想知道=)如果我转到另一个视图,而不是开始的视图,那么这会起作用,并且当调用该委托时,除此之外,委托将不会有帮助,如果我根本没有导航使其工作,您需要将UIPageViewControllerDelegate添加到头文件中,并在viewDidLoad中使用如下内容设置代理:self.pageViewController.delegate=self;