Я получаю предупреждение, когда устанавливаю делегата для 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;
приложение работает, методы UIImagePickerControllerDelegate в MyImagePickerController в настоящее время называется, но есть правильный способ установить делегат, так кто-то читает код знает, что мы пытаемся реализовать UIImagePickerControllerDelegateметоды и для новичка, чтобы очистить предупреждение.
А что произойдет, если вы хотите реализовать оба метода UIImagePickerControllerDelegate и UINavigationControllerDelegate в UIImagePickerControllerDelegate?Как бы вы установили единого делегата в Obj-C?Приветствия