3

uiview にはナビゲーション コントロールがないことを認識しています。したがって、uiview から次の uiviewcontroller にプッシュできません。

これが私のメソッドのコードです。助けてください。ありがとう!

 - (void)scrollViewDoubleTapped:(UITapGestureRecognizer*)recognizer {
    CGPoint pointInView = [recognizer locationInView:self];
    NSLog(@"%f , %f",pointInView.x,pointInView.y);

    if ((pointInView.x >= (231.0) && pointInView.x <=(293) && pointInView.y >= (193)  && pointInView.y <=(218)) )
    {

        // how to push to next viewcontroller here?

        UIView *view = [UIGestureRecognizer view]; //what should i do for this code?


        [self viewController];
    }
}

-(TestViewViewController*)viewController
{
    for (UIView *next = [self superview]; next; next = next.superview)
    {
        UIResponder *nextResponder = [next nextResponder];

        if([nextResponder isKindOfClass:[TestViewViewController class]])
        {

            return (TestViewViewController*)nextResponder;
        }
    }

    return nil;
}
4

1 に答える 1

0

あなたがnextResponderメソッドを使用することができるよりもビューを持つviewcontrollerを取得したい場合

したがって、最初に、gestureRecognizerからビューを取得します。

UIView *view = [gestureRecognizer view];

ビューを含むビューコントローラを検索するよりも

ここを見て

編集:

 if ((pointInView.x >= (231.0) && pointInView.x <=(293) && pointInView.y >= (193)  && pointInView.y <=(218)) )
    {

        // how to push to next viewcontroller here?

        UIView *view = [recognizer view]; //what should i do for this code?

       UIViewController *viewController = [self getViewControllerFromView:view];

       if(viewController) {
          // do whatever you want...
         UIViewController *newViewController = ...
         [viewController.navigationController pushViewController:newViewController animated:YES];
       }

    }

...メソッドgetViewControllerをあなたのケースに書き直しました。いくつかのビューからそれを取得するには:

-(UIViewController*)getViewControllerFromView:(UIView*) view
{
    if([[view nextResponder] isKindOfClass:[UIViewController class]])
    {
        return (UIViewController*)[view nextResponder];
    }
    else {

        for (UIView *next = [view superview]; next; next = next.superview)
        {
            UIResponder *nextResponder = [next nextResponder];

            if([nextResponder isKindOfClass:[UIViewController class]])
            {
                return (UIViewController*)nextResponder;
            }
        }
    }

    return nil;
}

新しい編集::

.mファイルEAGLView@property (nonatomic, retain) UIViewController *viewController; ADDがあります。@synthesize viewController = _viewController;

CoreMotionAppDelegate ::

MainViewController * itemsViewController = [[MainViewController alloc]init];

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:itemsViewController];
    glView.viewController = itemsViewController;  


    [glView startAnimation];
    [[self window]setRootViewController:navController];

そして、あなたのscrollViewDoubleTapped方法よりも

EAGLView *v = (EAGLView*)[recognizer view];  
UIViewController *viewController =  v.viewController;
于 2013-03-21T07:41:06.793 に答える