0

ある特定のビュー コントローラーでアプリに iAd を正常に実装しました。他の多くのビュー コントローラーにも iAd を配置したいと考えています。ビュー コントローラごとに同じ iAd コードを何度も何度も記述するのは冗長に思えます。iAds 用のこのすべてのコードを 1 つのクラスに配置し、必要なときにいつでも呼び出すことができるようにしたいと考えています。そのため、ヘルパー クラスとクラス メソッド(+)と呼ばれるものについて聞いたことがありますが、これが必要かどうかはわかりません。誰かが私を正しい方向に導くことができますか? 例が役に立ちます。

編集

ビューコントローラーなしでシングルトンクラスを作成しましたが、それは正しいと思います。とにかく、iAd の実装には、次のようなサブビューの追加を含む多くのコード行があります。

[self.view addSubview:adView]; 

シングルトンは、「ビュー」を認識しないと言っています。他のView Controllerからシングルトンを呼び出すとき、ビューをシングルトンに渡す必要がありますか? ありがとうございました

4

2 に答える 2

1

何を共有しようとしていますか?説明から、(さまざまなグローバルデータ/状態ではなく)実装の再利用に最も関心があるように思われます。この目的のために、クラスの複数のインスタンスを使用できます。

もちろん、このクラスのインターフェイスに焦点を合わせて、使用する必要のあるビューやコントローラーとうまく相互作用するようにすることもできます(一般的な方法では、特別な場合は適切なコントローラーにとどまる必要があります)。

于 2012-08-13T22:57:40.023 に答える
1

新しいクラスである iAd シングルトンには、実際にはビューがありません。したがって、そこからアクセスすることはできません。

ビュー コントローラのビューを iAd クラスに渡すのではなく、VC に広告をリクエストさせることをお勧めします。このようなもの:

// SomeViewController
// Maybe this is viewDidLoad? It's wherever you are ready to 
// incorporate the ad into your view.
- (void) arrangeViewIncludingAds
{
    // Do other setup

    UIView * adView [[iAdSingleton sharedIAd] adWithParameters:infoToSelectAnAppropriateAdForThisVC];
    [self.view addSubview:adView];

    // Continue setup
}

各 VC の広告を変更するかどうかはわかりません。アイデアとして追加しただけです。

于 2012-08-13T23:00:40.247 に答える