我目前正在开发一款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,但这仍然令我感到烦恼。
答案 0 :(得分: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有问题,重新打开