8

ページビューコントローラーで現在のビューコントローラーを取得したい。どのようにそれを行うことができます。呼び出すデリゲートがありますか、それとも何ですか。

4

3 に答える 3

25

私はちょうど同じ問題を抱えていました。ページを変更した後、現在のコントローラーがリストの最後にあるようです。これは私にとってはうまくいきましたが、それが常に正しいかどうかはわかりません。

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
    UIViewController *vc = [pageViewController.viewControllers lastObject];
}
于 2012-12-16T22:56:47.797 に答える
2

pageViewController.viewControllersで最初のビュー コントローラを取得してみてください

    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...
    }
}
于 2017-10-06T17:38:24.897 に答える
0

UIViewController.view(またはそのsubView.subView.subView ...)のサブビューであるUIViewクラス(UIButton、UITable、またはその他のサブクラスとして)にいる場合

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;
    }
}
于 2012-12-14T11:36:38.230 に答える