代码:
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self.navigationController presentModalViewController:picker animated:YES];
[picker release];
Run Code Online (Sandbox Code Playgroud)
警告出现picker.delegate = self;在线上:
Class 'CardEditor' does not implement the 'UINavigationControllerDelegate' protocol
Run Code Online (Sandbox Code Playgroud)
为什么UIImagePickerController会关心我的类是否实现了UINavigationControllerDelegate协议?
e.J*_*mes 43
UIImagePickerController继承自UINavigationController.委托属性是其中的一部分UINavigationController,因此它要求其委托符合UINavigationControllerDelegate协议.
该委托财产声明,如下所示:
@property(nonatomic, assign) id<UINavigationControllerDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)
这告诉编译器验证您的控制器是否将实现该UINavigationConrollerDelegate协议.检查已到位,以便在控制器类未正确实现UINavigationController可能发送给其委托的所有方法时,可以生成编译时警告.
如果您正在寻找解决方案,您可以指示(在您的控制器类接口中)您的控制器符合该协议:
@interface MyController : NSObject <UINavigationControllerDelegate>
...
@end
Run Code Online (Sandbox Code Playgroud)
完成此操作后,编译器将警告您尚未实现的任何所需委托方法.这是一件好事,因为它会阻止您释放可能意外抛出"找不到方法"运行时错误的代码.
mat*_*att 16
你可以在.h文件中这样做
@interface MyController : UIViewController<UINavigationControllerDelegate, UIImagePickerControllerDelegate>
Run Code Online (Sandbox Code Playgroud)
e.James是对的.除此之外,UINavigationControllerDelegate仅指定可选方法.因此,快速解决方案是让视图控制器实现协议而不实现任何方法.
我已经检查了所有Apple Sample代码的实现,UIImagePickerControllerDelegate但它们都没有实现任何UINavigationControllerDelegate方法.所以,如果你不需要它们,请不要担心.
| 归档时间: |
|
| 查看次数: |
12967 次 |
| 最近记录: |