0

UITableView13 セルごとに Admob バナーを含むが必要です。これはすでに機能していますが、私の問題は、さまざまなバナー (現時点では 4 つ) を表示したいということです。セル 13 にはバナー 1、セル 26 にはバナー 2 などがあります。

私の問題は、それを実現する方法がわからないことです。現在、すべてのセルで最初のバナーを受け取ります。これは、コードがすべてのセルに 1 つのバナーをロードするだけで、「はい、広告があります。今は満足しています」と言って、2 つのバナーをロードしないことを意味します。 26セルで。

「AdCell」をサブクラス化し、スクロール時にすべてのセルがリロードされるのを防ぐために「hasAD」と言う Bool を用意しました (しかし、それは私の問題の一部でしょうか?)。多分あなたは私を助けることができます。

テーブル内のセル:

   AdCell *cell = (AdCell *)[tableView dequeueReusableCellWithIdentifier:@"AdCell"];
    cell.tag = 4;
    if (cell == nil) {
        cell = [[AdCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"AdCell"];

    }

    if (![cell hasAD]){

        // Create a view of the standard size at the bottom of the screen.
        // Available AdSize constants are explained in GADAdSize.h.
        GADAdSize customAdSize = GADAdSizeFromCGSize(CGSizeMake(290, 120));

        DFPBannerView *bannerView_ = [[DFPBannerView alloc] initWithAdSize:customAdSize];

        //The AdCounter is what i said with banner1,banner2 
        if (adCounter == 4){
            adCounter = 1;
        }
        bannerView_.adUnitID = [NSString stringWithFormat:@"LEFTOUT-%i/banner",adCounter];

        // Let the runtime know which UIViewController to restore after taking
        // the user wherever the ad goes and add it to the view hierarchy.
        bannerView_.rootViewController = self;

        //Center AD
        [bannerView_ setCenter:CGPointMake(cell.center.x, cell.center.y)];

        [cell.contentView addSubview:bannerView_];
        // Initiate a generic request to load it with an ad.
        [bannerView_ loadRequest:[GADRequest request]];


        adCounter++;

        [cell setHasAD];
    }



    return cell;
4

1 に答える 1

0

cellForRowAtIndexPath:メソッドで、値を確認しますindexPath.row。13 で割り切れる場合は、広告セルを読み込みます。

次に、その手法を拡張して、どの広告を読み込むかを確認することができます。つまり、行 26 の場合、26 % 13 = 2 なので、広告 #2 を読み込むなどです。

セル サブクラスにロジックを配置することは、モデル - ビュー - コントローラーのパターンに違反します。セルはデータの愚かな受信者であり、UITableViewController何を表示するかを決定するのはクラスです。

于 2013-08-21T22:53:34.067 に答える