2

UITableViewController 内のストーリーボードで iAd を動作させることができません。

これは基本的に私がこれまで行ってきたことです: ストーリーボードでは、UITableViewController のシーンの下部に iAd バナー ビューをドラッグしました。(ストーリーボードがそれを妨げているため、ビュー自体にバナーを設定できませんでした。最初のレスポンダーと UITableViewController のアイコンの横に iAd オブジェクトをドラッグすることしかできませんでした。)

UITableViewController のヘッダーには、次のものがあります。

#import <UIKit/UIKit.h>
#import "ListViewController.h"
#import <iAd/iAd.h>

@interface ListViewController : UITableViewController <ADBannerViewDelegate>{
    bool bannerIsVisible;
}

@property (strong, nonatomic) IBOutlet ADBannerView *iAd;

@end

UITableViewController の実装には、次のものがあります。

- (void)viewDidLoad
{
  [super viewDidLoad];

  iAd.delegate = self;
  // iAd.frame = CGRectMake(0.0,200.0,iAd.frame.size.width,iAd.frame.size.height); // does not work
  //  self.tableView.tableFooterView = iAd;   // Display the banner at the middle of the screen (depending upon the number item of the table)

  // Do not know how to have the default banner to appear at the very bottom of the screen (behind the tab bar) when the view is loaded ?

} 


- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
  NSLog(@"didFailToReceiveAdWithError");
  if (bannerIsVisible)
  {
    [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
    banner.frame = CGRectMake(0.0,350.0,banner.frame.size.width,banner.frame.size.height);
    [UIView commitAnimations];
    bannerIsVisible = NO;
  }
}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
  NSLog(@"bannerViewDidLoadAd");
  if (!bannerIsVisible)
  {
    [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
    banner.frame = CGRectMake(0.0,317.0,banner.frame.size.width,banner.frame.size.height);
    [UIView commitAnimations];
    bannerIsVisible = YES;
  }
}

アイデアは、バナーを画面の下部に表示し、バナーの読み込みが成功した場合にタブ バーの上に表示することです。

私が抱えている問題: この構成では、「didFailToReceiveAdWithError」メソッドが呼び出されることもあれば、「bannerViewDidLoadAd」メソッドが呼び出されることもありますが、いずれの場合もバナーは表示されません。

4

4 に答える 4

6

あなたの問題は一般的なものです。ストーリーボードが原因ではなく、を使用しているために発生していますUITableViewControllerUITableViewControllers無料で多くのことを提供しますが、いくつかのことが必要です。それらの「こと」の 1 つは、ビューが であることを要求することUITableViewです。

いくつかのオプションがあります。ここにいくつかの好ましいものがあります。

1) iAd を として追加しますtableFooterViewこれには、この質問に対する私の回答で概説されているように、スクロール中に画面上に保持するための追加の作業が必要です。

UITableViewController2)サブクラスをサブクラスに変換しますUIViewController。これは興味深いことに、上でリンクされた質問のOPが最終的に行ったことです。基本的に、iAd をアニメーション化しながら、(現在はサブビューになっている) tableView のフレームをアニメーション化できます。そして、それは期待どおりに機能します。この回答で、ファイル内のサブクラスに変換するための基本的な手順UIViewController.xibを概説しました。そのほとんどは、あなたに適用できるはずです。

于 2012-07-10T01:15:20.713 に答える
4

iOS 7 以降では、これらは必要ありません。@Shmidt が彼のコメントで暗示しているように、あなたがしなければならないことはすべてあなたに設定さself.canDisplayBannerAds = trueれ、viewDidLoad他のすべては自動的に処理されます。これは、テーブル ビューでも美しく機能します。

于 2015-01-28T17:04:27.813 に答える