0

私は現在iPadアプリで作業しており、オブジェクトが特定の場所に移動された場合にビューを切り替えるために、ビューコントローラーを関数呼び出ししたいと考えています。「touchesMoved」と「touchesEnded」で、オブジェクトが特定の場所にドラッグされた場合にビューを切り替えるためにビューコントローラで関数を呼び出そうとしましたが、関数が呼び出されないようです。

たとえば、「touchesEnded」は非常に単純で、View Controllerを呼び出すだけです。メッセージは、touchesEndedの内部に記録されますが、呼び出される必要のあるViewControllerの関数の内部には記録されません。デバッガーで関数にステップインしてみましたが、ステップオーバーしたようです。

ビューから*注m_pJupiterはUIImageView、m_pLevelIDはNSString、m_pMyVCはカスタムビューコントローラークラスのインスタンスです。

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    if (m_pJupiter.center.x >= (m_pDest.center.x - 25)) 
    {
        NSLog(@"Calling beginGameWithLevelID");
        [m_pMyVC startGameWithLevelID: m_pLevelID];
    }
}

ビューコントローラの機能

- (void) startGameWithLevelID:(NSString*)pLevelID
{
    NSLog(@"MyViewController - beginGameWithLevelID");
    // The logic for switching views, etc
}

最初のログメッセージは常に表示されますが、ViewControllerのメッセージは表示されません。最悪の事態になると思いますが、カスタムUISliderを使用するだけですが、それでもこれは私を悩ませてきました。

4

1 に答える 1

1
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    if (m_pJupiter.center.x >= (m_pDest.center.x - 25)) 
    {
        NSLog(@"111");
        if([m_pMyVC respondsToSelector:@selector(startGameWithLevelID:)])
        {
            NSLog(@"222");
            [m_pMyVC startGameWithLevelID: m_pLevelID];
        }

    }
}

- (void) startGameWithLevelID:(NSString*)pLevelID
{
    NSLog(@"333");
    // The logic for switching views, etc
}

出力が「111」のみの場合は、「-(void)startGameWithLevelID:(NSString *)pLevelID」メソッドが見つからないことを示します

出力が「111」「222」の場合、xcodeに問題がある可能性があります。再度開きます。

于 2012-07-30T15:14:18.670 に答える