2011-06-13 2 views
2

내 업적 및 리더 보드 뷰 컨트롤러를 삭제하는 데 이상한 문제가 있습니다. viewcontrollers는 올바르게 표시되고 완료 버튼을 사용하여 닫을 수 있지만 표시되는 약 15 초 내에 만 누르면됩니다. 내 앱이 충돌 한 후에 언제든지 완료를 누르면됩니다. 디버거에서 "인스턴스로 보낸 인식 할 수없는 선택기"오류가 발생합니다.Monotouch 업적 및 리더 보드 viewcontroller

아마도 viewcontrollers가 가비지 수집 중입니까? 나는 정말로 조언을 해줄거야.

을 heres 내 코드

 public void checkAchievements(UIViewController view) 
    { 

     GKAchievementViewController gkview = new GKAchievementViewController(); 
     view.PresentModalViewController(gkview,true); 
     gkview.Delegate = new gkviewdelegate(); 

    } 

    public class gkviewdelegate : GKAchievementViewControllerDelegate 
    { 
     public override void DidFinish (GKAchievementViewController viewController) 
     { 
       viewController.DismissModalViewControllerAnimated(true); 
       Console.WriteLine("Dismiss Leaderboard"); 

     } 


    } 

답변

0

귀하의 gkview 쓰레기 수집지고 있습니다. 클래스 대신 인스턴스 변수로 변경하여 참조를 유지하십시오.

코드가 약간 비슷해야합니다.

GKAchievementViewController gkview; 

public void checkAchievements(UIViewController view) 
{ 
    gkview = new GKAchievementViewController(); 
    view.PresentModalViewController(gkview,true); 
    gkview.Delegate = new gkviewdelegate(); 
}