코드에 대한 경고를 던졌습니다 UINavigationControllerDelegate 프로토콜?는 UINavigationControllerDelegate
답변
UIImagePickerController
은 UINavigationController
을 상속합니다. 대리자 속성은 UINavigationController
의 일부이므로 대리인이 UINavigationControllerDelegate
프로토콜을 준수해야합니다.
@property(nonatomic, assign) id<UINavigationControllerDelegate> delegate;
이것은 컨트롤러가 UINavigationConrollerDelegate
프로토콜을 구현하는지 확인하도록 컴파일러에 지시합니다. 컨트롤러 클래스가 UINavigationController
이 대리자로 보낼 수있는 모든 메서드를 제대로 구현하지 않으면 컴파일 타임 경고가 생성 될 수 있도록 확인이 수행됩니다. 당신이 솔루션을 찾고 있다면
, 당신이 컨트롤러가 해당 프로토콜을 준수하는 (컨트롤러 클래스 인터페이스) 표시 할 수 있습니다 : 수행이되면
@interface MyController : NSObject <UINavigationControllerDelegate>
...
@end
, 컴파일러에 대해 경고합니다 구현하지 않은 필수 대리자 메서드. 이는 실수로 "메소드를 찾을 수 없음"런타임 오류가 발생할 수있는 코드를 공개하지 못하게하므로 좋은 방법입니다.
e.James가 옳습니다. 이 외에도 UINavigationControllerDelegate
은 선택적 방법 만 지정합니다. 그래서 빠른 해결책은 뷰 컨트롤러가 그 메소드를 구현하지 않고 프로토콜을 구현하도록하는 것입니다.
UIImagePickerControllerDelegate
의 구현에 대한 모든 Apple 샘플 코드를 확인했으며 모두 UINavigationControllerDelegate
메소드를 구현하지 않았습니다. 그래서 당신이 그들을 필요하지 않으면 걱정하지 마십시오.
당신은 검색 .H 파일에 UIImagePickerControllerDelegate과 함께 UINavigationControllerDelegate를 추가 할 수있는 솔루션 즉을 발견 한 후 나는 또한 그 같은 문제를 직면 .H 파일
@interface MyController : UIViewController<UINavigationControllerDelegate, UIImagePickerControllerDelegate>
에서 이런 식으로 할 수 있습니다.
@interface LatestJobsVC : UIViewController <UIImagePickerControllerDelegate , UINavigationControllerDelegate>
희망이 도움이됩니다. 감사합니다.
감사합니다.이 오류를 발견 했으므로 빠른 해결책을 제공했습니다. – KomodoDave
@KomodoDave : 도움이 되셨습니다. ':)' –
@ e.James 인터페이스 MyController : NSObject ... –
yunas