那里有两种可能的代表,我得到一个警告,当我设置委托的UIImagePickerController。这是因为UIImagePickerController及其父级UINavigationController都具有可以使用的委托。代码工作正常,但只是想知道如何妥善处理代理和继承,并失去了警告。设置委托在子类时在父类
所以基本上我已经建立了我自己的MyImagePickerController这是子类的UIImagePickerController。 UIImagePickerController是UINavigationController的子类。 所以继承树是
UINavigationController > UIImagePickerController > MyImagePickerController
MyImagePickerController也是的UIImagePickerController委托。 所以我添加到我的@interface。
@interface MyImagePickerController : UIImagePickerController <UIImagePickerControllerDelegate>...
然后我设置MyImagePickerController是授人以自身的loadView
- (void) loadView
{
...
self.delegate = self;
...
} 我实现UIImagePickerControllerDelegate委托方法,它所有的作品。
但我得到一个警告
warning: class 'MyImagePickerController' does not implement the 'UINavigationControllerDelegate' protocol
的问题是,无论是父类中有自己的代表
UINavigationController > UIImagePickerController > MyImagePickerController
UINavigationControllerDelegate > UIImagePickerControllerDelegate > MyImagePickerController
而且在定义的UIImagePickerController委托方法可以或者UINavigationControllerDelegate或UIImagePickerControllerDelegate
@interface UIImagePickerController : UINavigationController <NSCoding> {
@property(nonatomic,assign) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;
应用的工作原理,在MyImagePickerController的UIImagePickerControllerDelegate方法被调用,但没有设置委托所以有人阅读代码知道我们正在努力实现UIImagePickerControllerDelegate方法和新手清除警告有道。
如果要在UIImagePickerControllerDelegate中实现UIImagePickerControllerDelegate和UINavigationControllerDelegate方法,会发生什么情况?你如何设置Obj-C中的单个委托? 干杯