【问题标题】:Trouble with UITableViewCell for MoPub Native AdMoPub 原生广告的 UITableViewCell 出现问题
【发布时间】:2015-07-14 19:14:44
【问题描述】:

我为我的 iOS 应用集成了 MoPub 广告,以便在我的 UITableViewController 中运行一些原生广告(实际上,它是一个 PFQueryTableViewController,因为我使用 Parse 将数据加载到 tableView 中)。

一切正常 - 控制台显示广告已成功加载,并且我可以在 tableView 中看到广告应该在的额外单元格 - 问题是没有显示广告的内容;我只看到一个空白单元格。

问题似乎不是来自 MoPub。我认为我的手机设置不正确,因为我无法让任何东西出现在那里。

我尝试了两件事。

  1. 使用情节提要设置单元格。我在 UITableViewController 中添加了一个新单元格,并为它创建了一个新类 NativeAdCell。我设计了 IBOutlets 并将它们连接到类文件。 内容通过 MoPub 函数加载,如下所示:

    func layoutAdAssets(adObject: MPNativeAd!) {
    adObject.loadIconIntoImageView(iconImageView)
    adObject.loadTitleIntoLabel(titleLabel)
    adObject.loadCallToActionTextIntoButton(callToActionButton)
    adObject.loadImageIntoImageView(mainImageView)
    adObject.loadTextIntoLabel(mainTextLabel)
    }
    

应用程序在第一行崩溃,控制台输出(lldb)

  1. 以编程方式添加网点。在NativeAdCell 文件中,我添加了这样的出口:

    var mainTextLabel = UILabel()
    var titleLabel = UILabel()
    var iconImageView = UIImageView()
    var mainImageView = UIImageView()
    var callToActionButton = UIButton()
    

然后设置他们的框架。 内容使用相同的 MoPub 功能加载。现在没有崩溃,但广告单元显示完全空白,没有内容。即使我手动设置mainTextLabel.text = "Please show up" 也不会显示任何内容。

当我尝试加载 IBOutlets 时崩溃让我觉得我将 NativeAdCell 链接到 tableView 的方式有问题,但似乎 MoPub SDK 应该处理这个问题。

任何人都可以根据此信息发现问题吗?

【问题讨论】:

  • 除了下面的答案之外,您对此是否有任何运气?我遇到了同样的问题,它告诉我 iconImageView 是 nil
  • 不,我无法使用 IBOutlets 完成它:-/

标签: ios swift uitableview mopub


【解决方案1】:

我在没有 IBOutlets 的情况下实现了如下,它没有很好的文档记录,所以我认为这可能会帮助那些希望将 MoPub SDK 与自定义单元格用于原生广告的人

//
//  AdTableViewCell.swift
//  Trending-News
//
//  Created by Conor Griffin on 22/07/2015.
//  Copyright (c) 2015 Conor Griffin. All rights reserved.
//

import UIKit
import MoPub

class AdTableViewCell: UITableViewCell, MPNativeAdRendering {

    var iconImageView: UIImageView! = UIImageView()
    var titleLabel: UILabel! = UILabel()
    var mainTextLabel: UILabel! = UILabel()
    var advertIndicator: CGSponsoredLinkLabel! = CGSponsoredLinkLabel()
    var adCorner: CGCornerHighlight! = CGCornerHighlight()

    static func sizeWithMaximumWidth(maximumWidth: CGFloat) -> CGSize {
        return CGSize(width: maximumWidth, height: 100)
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        let width = CGRectGetWidth(frame)
        let cellFrame = CGRect(x: 0, y: 0, width: width, height: 100)

        iconImageView.layer.borderColor = UIColor.grayColor().CGColor
        iconImageView.layer.borderWidth = 1
        iconImageView.frame = CGRectMake(10, 10, 80, 80)
        contentView.addSubview(iconImageView)

        titleLabel.frame = CGRectMake(100, 10, self.frame.width - 110, 25)
        contentView.addSubview(titleLabel)

        mainTextLabel.frame = CGRectMake(100, 35, self.frame.width - 110, self.frame.height - 65)
        contentView.addSubview(mainTextLabel)
        mainTextLabel.numberOfLines = 3
        mainTextLabel.font = UIFont.systemFontOfSize(11.0)

        advertIndicator.frame = CGRectMake(100, self.frame.height - 30, self.frame.width - 110, self.frame.height - 80)
        contentView.addSubview(advertIndicator)
        advertIndicator.font = UIFont.systemFontOfSize(10.0)
        advertIndicator.text = "Advertisement"
        advertIndicator.textColor = UIColor.darkGrayColor()
        advertIndicator.backgroundColor = UIColor(red: 252/255.0, green: 246/255.0, blue: 220/255.0, alpha: 1.0)
        advertIndicator.clipsToBounds = true
        advertIndicator.layer.masksToBounds = true
        advertIndicator.layer.cornerRadius = 3

    }

    func layoutAdAssets(adObject: MPNativeAd!) {
        adObject.loadTitleIntoLabel(titleLabel)
        adObject.loadTextIntoLabel(mainTextLabel)
        adObject.loadIconIntoImageView(iconImageView)
    }

}

【讨论】:

  • 能否提供 CGSponsoredLinkLabel 和 CGCornerHighlight 代码?谢谢!
【解决方案2】:

真的很神奇,我忘记将子视图添加到 NativeAdCell 的 contentView 中。 self.contentView.addSubview(mainTextLabel) 等解决了 #2。

仍然不确定如何让它与 IBOutlets 一起使用。这样会容易得多(消除对编程约束的需要)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 2016-09-06
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多