2016-05-10 8 views
2

AdMob標準バナーを静的なテーブルビューセル(tableview:1セクション、5 rows)に統合しました。BannerViewがロード/ロードされない場合のスタティックTableViewセルの表示/非表示

バナーが読み込まれているかどうかによって、関連するテーブルビューセル(AdMobバナービューを含む)を自動的に表示または非表示にしたいとします。

AdMobのバナー統合のための私のコード:バナー負荷やそれ以外かどうかをテストする

import UIKit 
import GoogleMobileAds 

class WorkoutsFreeListTVC: UITableViewController, GADBannerViewDelegate { 

@IBOutlet weak var bannerView: GADBannerView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    bannerView.hidden = true 
    bannerView.adUnitID = "ca-app-pub-9451126739340372/2084650447" 
    bannerView.rootViewController = self 
    bannerView.delegate = self 

    let request = GADRequest() 
    request.testDevices = ["dcf33ab873fb56fdf5ff94bd7a5f3fde"] 

    bannerView.loadRequest(GADRequest()) 
} 

機能:

func adViewDidReceiveAd(bannerView: GADBannerView!) { 
    bannerView.hidden = false 
} 

func adView(bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) { 
    bannerView.hidden = true 
} 

(負荷のために利用可能な場合)マイbannerViewは常に同じで提示されますテーブルビューセル(行インデックス3)。

私は望ましい結果を達成するために、このコードの線に沿って考えています:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
if indexPath.row == 3 && !myImageIsLoaded { 
    return 0 
} 
// Will hide just the fourth row of my table if myImageIsLoaded is false 

return 50 

を}私は、セルの高さがゼロ(0)と効果的と返されたことにより、同様の質問から得た

!myImageIsLoadedの場合は "hidden"です。

私は自分のニーズにコードを修正しようとしていましたが、固執しています。

質問:私は正しい道にいるのですか?私はこの問題にどのようにアプローチすべきでしょうか?コードを自分のニーズにどうやって修正できますか?

お時間をいただき、ありがとうございます;)

答えて

1

キャサリン・ジェンキンス、

はいあなたは以下の通りのアプローチは絶対に大丈夫です。

おそらく、あなたがチェックしたいのは、bannerViewが隠されているかどうかだけです。非表示の場合は、行の高さを0に設定し、そうでなければセルの高さを適切に戻します。

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if indexPath.row == 3 { 
     if bannerView.hidden 
      return 0 
     else 
      return 50 //value of height for banner cell 
    } 
    else { 
     return 50 //return other cell height 
    } 
} 

、あなたが

func adViewDidReceiveAd(bannerView: GADBannerView!) { 
    bannerView.hidden = false 
    self.tableView.reloadData() 
} 

func adView(bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) { 
    bannerView.hidden = true 
    self.tableView.reloadData() 
} 
+0

おかげでサンディープを行うことができ、セルの高さの変化を反映するためです。私のために空白を記入してくれてありがとう。あなたがアドバイスしたように 'self.tableView.reloadData()'も組み込みます。ブリリアント!すばらしいダーを! –

関連する問題