0

我想要UITableView每 13 个单元格包含一个 Admob 横幅。这确实有效,但我的问题是我想显示不同的横幅(目前有 4 个)。因此,在单元格 13 我们有横幅 1,在单元格 26 有横幅 2,依此类推。

我的问题是,我不知道如何实现这一点。目前我在每个单元格中收到第一个横幅 - 我猜 - 这意味着代码只在每个单元格中加载 1 个横幅,然后说“是的。我有我的广告。现在我很高兴”然后不加载 2 个横幅在 26 单元格中。

我确实对我的“AdCell”进行了子类化,并有一个 Bool,上面写着“hasAD”,以防止滚动时每个单元格都重新加载(但也许这是我的问题的一部分?)。也许你可以帮助我。

表中的单元格:

   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 回答