カスタム セルを含む 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
}