那裏有兩種可能的代表,我得到一個警告,當我設置委託的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中的單個委託? 乾杯