2012-09-02 3 views
0

어떤 이유로 든 하루 종일 어려움을 겪고 누군가가 그것에 대해 밝힐 수 있기를 바랍니다.UIReferenceLibraryViewController를 Cocos2d (2.0)에서 사용하기

CCLabelTTF을 설정하고 이에 대한 터치 핸들러를 추가했습니다. 터치 끝에서 UIReferenceLibraryViewController에있는 해당 라벨의 문자열 값을 조회하고 싶습니다. 여기에 (나의 게임은 내가 90degree 회전을 시도하고있어 왜 가로 모드)처럼 내 시도가 보이는 내용은 다음과 같습니다 작품의

if(NSClassFromString(@"UIReferenceLibraryViewController")) { 

       if ([UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:word.Value] == YES) 
       { 
        UIReferenceLibraryViewController *reference = 
        [[UIReferenceLibraryViewController alloc] initWithTerm:word.Value]; 
        reference.view.center = CGPointMake(winSize.width/2, winSize.height/2); 
        reference.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(90.0f)); 

        [[[CCDirector sharedDirector] view] addSubview:reference.view]; 
       } 
      } 

종류. 내 레이블을 클릭하면 UIReferenceLibraryViewController이 표시됩니다 (어떤 이유로 가로로 회전하지는 않지만). 내 정의가 나타납니다. 그러나 UIReferenceLibraryViewController에서 "완료"버튼을 클릭하면 내 앱이 EXEC_BAD_ACCESS와 충돌합니다. 그림 나는 여기서 명백한 것을 놓치고 있지만 확실하지는 않습니다.

물론 도움이됩니다.

감사
무스타파

답변

0

나는 비슷한 문제가 있었다. 내 경우, 내 클래스의 메서드 안에 UIReferenceLibraryViewController 개체를 선언하고 인스턴스화했습니다. 그 시점에서 내 UIReferenceLibraryViewController 개체가 없어지면 '완료'버튼을 선택할 때 오류가 발생했습니다. I는 사전 화면을 제시하고 싶었 때 방법에서

@property (retain) UIReferenceLibraryViewController *reference; 

: 다음과 속성을 생성

UIReferenceLibraryViewController *reference; 

가 유지 : 문제를 해결하기 위해, I 클래스 인터페이스 내의 멤버 변수를 만들어 다음 사용 않았다

reference = [[UIReferenceLibraryViewController alloc] initWithTerm:cell.textLabel.text]; 
[[[CCDirector sharedDirector] openGLView] addSubview:reference.view]; 

나는 다음의 dealloc 메소드에서 참조 객체를 발표했다. 불행히도 더 이상 충돌하지 않지만 '완료'버튼은 아무 것도하지 않습니다.

추가 정보 : 궁극적으로 나는 내 응용 프로그램을 작동시키고 있습니다. 내 응용 프로그램은 CCScene을 통해 UITableView를 추가하고 사용자가 셀 내에서 단어의 정의를 조회하기 위해 표보기 셀을 클릭 할 수있게합니다.

이 작업을 수행하기 위해 다음 작업을 수행했습니다. CCScene 클래스 (Game.m) 내에서 UITableView를 만듭니다. 그런 다음 UITableViewController 클래스를 만들고 UITableView 데이터 소스를 설정하고 해당 새 클래스에 위임합니다.

myTableView.dataSource = myWordListViewController; 
myTableView.delegate = myWordListViewController; 

다음과 같이 UITableView를 CCScene의 하위보기로 추가합니다.

[[[CCDirector sharedDirector] openGLView] addSubview:myTableView]; 

CCScene 클래스에는 내 AppDelegate 클래스의 인스턴스 인 멤버 변수 (delegate)가 있습니다. AppDelegate 클래스에는 RootViewController의 인스턴스 인 멤버 변수가 있습니다.

RootViewController *viewController; 

그래서, 지금은합니다 (CCScene의 상단에) 사용자에게 제공 jQuery과가있다. 이 테이블 뷰에는 단어 목록이 들어 있습니다. 이제 테이블 뷰 셀에 클릭 할 때 사전 정의가 표시되는지 확인해야합니다.

내 MyWordListViewController (UITableViewController)에서이 클래스가 데이터 소스로 작동하고 내 테이블보기에 위임 할 수있게하는 메소드가 있는지 확인합니다. 사용자가 jQuery과의 셀 (즉 CCSCENE의 하위 뷰)를 클릭 또한

<UITableViewDelegate, UITableViewDataSource> 

는, I는 사전 테이블 뷰의 상부에 표시 할.

사용자가 MyWordListViewController의 didSelectRowAtIndexPath 메서드를 클릭하여 응답합니다. CCScene (Game.m)의 하위보기로 테이블보기를 추가 한 이후로, 나는 CCScene이 의존하는 AppDelegate RootViewController를 사용해야합니다.

이렇게하기 위해 AppDelegate 클래스의 인스턴스를 보유하고있는 MyWordListViewController에 멤버 변수를 추가했습니다.

delegate = (AppDelegate*) [[UIApplication sharedApplication] delegate]; 

지금 MyWordListViewController의 didSelectRowAtIndexPath 방법에있어서, I는 AppDelegate에 클래스 내의 RootViewController 변수에 의존하여 테이블 뷰 위에 사전을 표시 할 수있다.

reference = [[UIReferenceLibraryViewController alloc] initWithTerm:cell.textLabel.text]; 

[delegate.viewController presentModalViewController:reference animated:YES]; 

그것은 가장 훌륭한 해결책은 아니지만 작동합니다.

관련 문제