0

我目前正在开发一个 iPad 应用程序,并希望对我的视图控制器进行函数调用,以在对象移动到某个位置的事件上切换视图。在“touchesMoved”和“touchesEnded”中,如果对象被拖到某个位置,我尝试在视图控制器中调用一个函数来切换视图,但该函数似乎从未被调用。

例如,“touchesEnded”相当简单,只是调用视图控制器,消息被记录在 touchesEnded 内部,而不是应该被调用的视图控制器函数内部。我尝试在调试器中单步执行该函数,但它似乎只是越过了它。

从视图*注意 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
}

第一条日志消息总是出现,但视图控制器中的消息永远不会出现。我在想更糟糕的情况,我只会使用自定义 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 回答