2010-05-13 1 views

답변

43

UIImagePickerControllerUINavigationController을 상속합니다. 대리자 속성은 UINavigationController의 일부이므로 대리인이 UINavigationControllerDelegate 프로토콜을 준수해야합니다.

delegate property

은과 같이 선언한다 :

@property(nonatomic, assign) id<UINavigationControllerDelegate> delegate; 

이것은 컨트롤러가 UINavigationConrollerDelegate 프로토콜을 구현하는지 확인하도록 컴파일러에 지시합니다. 컨트롤러 클래스가 UINavigationController이 대리자로 보낼 수있는 모든 메서드를 제대로 구현하지 않으면 컴파일 타임 경고가 생성 될 수 있도록 확인이 수행됩니다. 당신이 솔루션을 찾고 있다면

, 당신이 컨트롤러가 해당 프로토콜을 준수하는 (컨트롤러 클래스 인터페이스) 표시 할 수 있습니다 : 수행이되면

@interface MyController : NSObject <UINavigationControllerDelegate> 
    ... 
@end 

, 컴파일러에 대해 경고합니다 구현하지 않은 필수 대리자 메서드. 이는 실수로 "메소드를 찾을 수 없음"런타임 오류가 발생할 수있는 코드를 공개하지 못하게하므로 좋은 방법입니다.

+0

감사합니다.이 오류를 발견 했으므로 빠른 해결책을 제공했습니다. – KomodoDave

+0

@KomodoDave : 도움이 되셨습니다. ':)' –

+0

@ e.James 인터페이스 MyController : NSObject ... – yunas

6

e.James가 옳습니다. 이 외에도 UINavigationControllerDelegate은 선택적 방법 만 지정합니다. 그래서 빠른 해결책은 뷰 컨트롤러가 그 메소드를 구현하지 않고 프로토콜을 구현하도록하는 것입니다.

UIImagePickerControllerDelegate의 구현에 대한 모든 Apple 샘플 코드를 확인했으며 모두 UINavigationControllerDelegate 메소드를 구현하지 않았습니다. 그래서 당신이 그들을 필요하지 않으면 걱정하지 마십시오.

16

당신은 검색 .H 파일에 UIImagePickerControllerDelegate과 함께 UINavigationControllerDelegate를 추가 할 수있는 솔루션 즉을 발견 한 후 나는 또한 그 같은 문제를 직면 .H 파일

@interface MyController : UIViewController<UINavigationControllerDelegate, UIImagePickerControllerDelegate> 
3

에서 이런 식으로 할 수 있습니다.

@interface LatestJobsVC : UIViewController <UIImagePickerControllerDelegate , UINavigationControllerDelegate> 

희망이 도움이됩니다. 감사합니다.