Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 所有我的视图控制器中的AdMob?_Iphone_Xcode_Admob_Ads_Banner - Fatal编程技术网

Iphone 所有我的视图控制器中的AdMob?

Iphone 所有我的视图控制器中的AdMob?,iphone,xcode,admob,ads,banner,Iphone,Xcode,Admob,Ads,Banner,我已经实现了AdMob&一切似乎都正常, 但是我很好奇,我怎么能把横幅放在我所有的视图控制器中呢? 目前,我只有RootViewController上的横幅。 我总共有4个视图控制器。 谢谢。我不知道adMob是如何工作的,但是像其他任何东西一样,你可以创建一个BaseViewController,在其中你可以添加你的adMob(在viewDidLoad方法中),然后所有其他的ViewController可以子类化这个BaseViewController。只需调用[super viewDidLo

我已经实现了AdMob&一切似乎都正常,
但是我很好奇,我怎么能把横幅放在我所有的视图控制器中呢?
目前,我只有RootViewController上的横幅。
我总共有4个视图控制器。

谢谢。

我不知道adMob是如何工作的,但是像其他任何东西一样,你可以创建一个
BaseViewController
,在其中你可以添加你的adMob(在
viewDidLoad
方法中),然后所有其他的ViewController可以子类化这个
BaseViewController
。只需调用
[super viewDidLoad]在ViewController的
viewdiload
方法中,您将拥有它


希望这能解决你的问题……:)

这里需要的是一个
GADBannerView
singleton类型。您可能可以创建一个包装类作为adView的单例,如下所示:

@interface GADMasterViewController : UIViewController {
  GADBannerView *adBanner_;
  BOOL didCloseWebsiteView_;
  BOOL isLoaded_;
  id currentDelegate_;
}
只需确保
GADMasterViewController
始终返回单例:

+(GADMasterViewController *)singleton {
  static dispatch_once_t pred;
  static GADMasterViewController *shared;
  // Will only be run once, the first time this is called
  dispatch_once(&pred, ^{
    shared = [[GADMasterViewController alloc] init];
  });
  return shared;
}
有一种方法可以重置保持在adView上的当前视图控制器:

-(void)resetAdView:(UIViewController *)rootViewController {
  // Always keep track of currentDelegate for notification forwarding
  currentDelegate_ = rootViewController;

  // Ad already requested, simply add it into the view
  if (isLoaded_) {
    [rootViewController.view addSubview:adBanner_];
  } else {

    adBanner_.delegate = self;
    adBanner_.rootViewController = rootViewController;
    adBanner_.adUnitID = kSampleAdUnitID;

    GADRequest *request = [GADRequest request];
    [adBanner_ loadRequest:request];
    [rootViewController.view addSubview:adBanner_];
    isLoaded_ = YES;
  }
}
那么,显示您的广告只是一个问题:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    shared = [GADMasterViewController singleton];
    [shared resetAdView:self];
}

您可能需要设置一个委托来转发通知,因为AdMB SDK对委托在请求中间更改它的行为不好。p>


你可以找到一篇关于这方面的博文。

谢谢你,让我了解一下。。。如果我在RootViewController的viewDidLoad中有这个:CGRect frame=CGRectMake(0.0,self.view.frame.size.height,GAD_size_320x50.width,GAD_size_320x50.height);self.adBanner=[[GADBannerView alloc]initWithFrame:frame];那么,我该如何写下你在每个VC的每个viewDidLoad中所说的话呢?抱歉,只是我对所有这些东西都是新手…everyViewController将子类化rootViewController,然后调用[super viewDidLoad];在viewControllers的viewDidLoad方法中,您将拥有它…谢谢RajPara,我昨天试图关注这篇文章,但“我迷路了”,但没有成功:\。。。所有这些新东西你能提供一些关于你在哪里迷路的细节吗?如果你有具体的问题,你一定可以试着帮你解决