0

将来的にアプリを簡単に統合できるように、iAd初期化コードをメインのUIViewControllerから可能な限り分離しようとしています。iAdのセットアップと初期化を処理するためにAdManager(NSObject)クラスを作成しました。ただし、これらのデリゲートクラスを実装する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」に割り当てています

私はデリゲートに関するこの特定の状況にあまり満足していないかもしれないので、私の考えられる誤解を許してください、しかし私が必要とするものを同様の方法で達成することは可能ですか?どのように?

4

1 に答える 1

1

vc引数をとして定義していますUIViewController *。つまり、ADBannerViewDelegateプロトコルに準拠している必要はなく、古いViewControllerをそこに渡すことができます。vc次のプロトコルに準拠するViewControllerのみを渡すことができるように、引数を定義する必要があります。

+(void)initAdBannersInView:(UIView*)view andViewController:(UIViewController<ADBannerViewDelegate>*)vc{
于 2012-04-23T22:20:46.780 に答える