0

カスタム セルを含む UITableView が Storyboard で作成されました。

セル内のラベルがコンセントに接続されました:

@IBOutlet weak var label: UILabel!

セルの作成時にラベルのテキストを設定しています。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
    if (shouldPresentNativeAds)
    {
        return self.createAdCellForCollectionView(collectionView, cellForItemAtIndexPath: indexPath)
    }
    else
    {
        return self.createRegularCellForCollectionView(collectionView, cellForItemAtIndexPath: indexPath)
    }
}

問題はadCellsでのみ発生します

func createAdCellForCollectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(NSStringFromClass(FeedAdCollectionViewCell), forIndexPath: indexPath) as! FeedAdCollectionViewCell

    let nativeAdd = nativeAdsManager.nextNativeAd() as FBNativeAd?

    if (nativeAdd != nil)
    {
        cell.setDetails(nativeAdd!)
        return cell
    }
    else
    {
        return self.createRegularCellForCollectionView(collectionView, cellForItemAtIndexPath: indexPath)
    }
}

セル内:

func setDetails(nativeAd:FBNativeAd)
{
    if ((self.nativeAd) != nil) {
        self.nativeAd.unregisterView()
    }

    self.nativeAd = nativeAd

    if let nativeAdTitle = nativeAd.title
    {
        label.text = adTitleString
    }

    if let topController = UIApplication.topViewController() {
        nativeAd.registerViewForInteraction(self, withViewController: topController)
    }
}

なぜかラベルが重なっていることがあります。

以下をセルコードに追加しました。

override func prepareForReuse()
{
    super.prepareForReuse()
    print("prepareForReuse")
    self.label.text = ""
}

しかし、それは役に立ちませんでした。

ログは正しいです: ラベル テキストを設定する前に、常に prepareForReuse が呼び出されます。でも重なっている時もあります。何ができるでしょうか?

    if let nativeAdd = nativeAdsManager.nextNativeAd() as FBNativeAd?
    {
        cell.setDetails(nativeAdd!)
        return cell
    }

ここに画像の説明を入力

4

0 に答える 0