2012-04-23 6 views
0

今後のアプリケーションの容易な統合を実現するために、できるだけ主UIViewControllerからiAd初期化コードを分離しようとしています。 iAdの設定と初期化を処理するAdManager(NSObject)クラスを作成しました。しかし、これらのデリゲートクラスを実装するUIViewControllerの外にあるオブジェクトのデリゲートを設定する方法はわかりません。たとえば、次のようにUIViewControllerの外にデリゲートを設定しますか?

@interface AppViewController : UIViewController<ADBannerViewDelegate> 

と私のAdManagerのはこのようなものだろう:

+(void)initAdBannersInView:(UIView*)view andViewController:(UIViewController*)vc{ 
    ADBannerView *iAdBannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, -bannerSize.height, bannerSize.width, bannerSize.height)]; 
    iAdBannerView.delegate = vc; 
    [view addSubview:iAdBannerView]; 

エラー(警告)メッセージがある。 'のUIViewController'

は私が

互換性のないタイプから 'ID' にも割り当てを代理人についてのこの特定の状況ではあまりうまくいかないので、私の可能な誤解を許してください。しかし、私が必要としていることを同様の方法で達成することは可能でしょうか?どうやって?

答えて

1

引数vcUIViewController *と定義しています。つまり、そこに古いビューコントローラを渡すことができます。必ずしもADBannerViewDelegateプロトコルに準拠しているコントローラではありません。そのプロトコルに準拠するビューコントローラを渡すことができるように、vc引数を定義する必要があります。

+(void)initAdBannersInView:(UIView*)view andViewController:(UIViewController<ADBannerViewDelegate>*)vc{ 
+0

これは私のエラーを修正しました。ありがとうございました。 – Vad

関連する問題