2010-06-03 4 views
2

ramin.firoozye.com의 "Semi-Modal (Transparent) Dialogs in the iPhone"코드로 앱에 부분 오버레이 모달을 구현하려고합니다. 오버레이 기능이 작동하고 모달이 뷰로 슬라이드되지만 모달의 컨트롤러에서 IBAction을 호출하면 "인스턴스로 보낸 인식 할 수없는 선택기"충돌이 발생합니다.iPhone : "인식 할 수없는 셀렉터가 인스턴스로 전송되었습니다"오류

코드를 격리하여 기본 기능을 다시 만들었으며 동일한 오류가 발생했습니다. 내가 무슨 말을하고 있는지보기 위해서, 너는 download the test project here 일 수있다.

나는 여기에서 간단한 것을 놓치고있을 것이라고 확신한다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

2

TestViewController displayModal :에서 ModalViewController를 보여줄 때, modalController를 해제합니다 (20 행). 이것을하지 마십시오. ViewController가 살아 있어야합니다. 이것을 해제하면보기 만 활성 상태로 유지됩니다 (하위보기로 추가 될 때 그대로 유지됨).

또한 ModalViewController hideModalEnded에서 보유하지 않은 modalView를 릴리스하므로 삭제할 수도 있습니다.

이제보기가 제거 된 후에 ModalViewController 인스턴스 만 해제해야합니다. 당신은 [self release]로 이것을 할 수 있습니다; hideModalEnded에서 이것은 비정상적인 패턴 인 것 같아서 좋지는 않습니다.

제안 :

  • 쇼를 유지하고 같은 클래스의 메소드를 숨 깁니다.
  • 컨트롤러를 컨트롤러와 함께 보관하십시오.
  • 또 다른 가능성 : ModalViewController를 모두 제거하고 을 TestViewController에 모두 넣으십시오 -하지만 이것은 실제 상황에서 얼마나 많은 작업이 진행될 것인가에 달려 있습니다.
+0

하! 간단했다. 디버깅 시간을 절약 해 주셔서 감사합니다! – Cuzog

+0

동일한 테스트 앱, 새로운 버그. 이것이 릴리스와 관련이 있는지는 모르지만 모달을 열고 다시 닫으면 7 번째로 8 번째 시간에 앱이 다운됩니다. 디버거에 "EXC_BAD_ACCESS"가 표시됩니다. – Cuzog

+0

죄송합니다. 뷰와 컨트롤러가 섞여서 릴리스가 미끄러졌습니다 ... 필자는 8 번째 화신에 일관되게 실패한 이유를 모르겠습니다. – Eiko

관련 문제