2012-07-30 4 views
0

현재 iPad 응용 프로그램에서 작업하고 있으며 내보기 컨트롤러에 함수 호출을 만들어 개체가 특정 위치로 이동 한 경우보기를 전환하려고합니다. "touchesMoved"및 "touchesEnded"에서 객체가 특정 위치로 드래그 된 경우보기를 전환하는 뷰 컨트롤러의 함수를 호출하려고했지만 함수가 호출되지 않습니다.함수 호출 전화 번호 기능

예를 들어, "touchesEnded"는 매우 간단하며 뷰 컨트롤러를 호출하기 만하면 메시지는 touchesEnded 안에 기록되지만 호출해야하는 뷰 컨트롤러의 기능에는 기록되지 않습니다. 디버거에서 함수를 단계적으로 시도했지만 그것을 그냥 넘어 것 같습니다. 보기에서

* m_pJupiter가 m_pLevelID가있는 NSString이다하는 UIImageView에, 그리고 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

isUserInteractionEnabled? 해당 메서드를 호출 할 때 – RolandasR

+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", 그것은 당신 찾을 수 있음을 나타냅니다 "- (무효) startGameWithLevelID : (있는 NSString *) pLevelID"방법

출력이 "111"인 경우 "(222) ", 아마도 xcode에 문제가 있습니다. 다시 엽니 다.

+0

"startGameWithLevelID"가 클래스의 일부이기 때문에 클래스가 선택기에 응답하지 않는다고 말하기 때문에 좋습니다. – riqitang

+0

클래스의 뷰 컨트롤러 인스턴스가 생성 중에 할당되지 않았으므로 선택기에 응답하지 않습니다. 고쳐졌고 지금 큰 덕분입니다. 고마워요. – riqitang