2011-12-05 12 views
0

私は申し訳ありませんが、私は、デリゲートプロトコルとプロパティを持つクラスをサブクラス..場合サブクラス化後の代理人ですか?

タイトルのために短い質問を策定することができませんでした、私の代理人はまだデリゲートプロトコルを実装する必要がありませんまたはサブクラスのために新しいものを定義する必要がありますか?私の場合は

私はUIImagePickerControllerをサブクラス化:

警告:セマンティック問題:

[(UIImagePickerController *)self.myUIImagePickerControllerSubclassInstance setDelegate:self]; 

私は次の警告を取得し、いくつかのビューコントローラから、selfにそのデリゲートを設定しようと

送信します'ViewController *'のパラメータに の互換性のないタイプ 'id'

答えて

1

デリゲートがUIImagePickerControllerプロパティ宣言を遵守する必要があります:あなたのサブクラスのインターフェイスに<UIImagePickerControllerDelegate>を追加してみてください、そう

@property (nonatomic, assign) id<UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate

@interface YourPicker : UIImagePickerController <UIImagePickerControllerDelegate> 
... 
@end 

そしておそらく、あなたはUINavigationControllerDelegateを必要とし、必須実装しますもしあれば、方法。

+0

ありがとう!私は、私のviewControllerにUINavigationControllerDelegateを追加しただけであることを知りました: '@interface ViewController:UIViewController ' – bijan

0

はい、代理人もスーパークラスと互換性がある必要があります。例:

このプロトコルは、Webビューデリゲートを拡張しているため、2つは互いに互換性があります。

+0

ありがとうございます!したがって、私のサブクラスがスーパークラスの既存のものに追加する追加のデリゲートメソッドです – bijan

+0

@bijanが正しく、彼らはスーパークラスが定義するものに追加します。 –