2

ビューコントローラーに iAd を実装して、使用したコードで iAd のシングルトンクラスを作成したいのですが、ビューコントローラーに iAd が表示されません。

adWhirlSingleton.h

#import <Foundation/Foundation.h>
#import "iAd/ADBannerView.h"
@interface adWhirlSingleton : NSObject <ADBannerViewDelegate> {
    ADBannerView *adView;
    UIViewController *displayVC;
}
@property (strong, nonatomic) ADBannerView *adView;
@property (strong, nonatomic) UIViewController *displayVC;
+(id)sharedAdSingleton;
-(void)adjustAdSize:(CGFloat)x:(CGFloat)y;
@end

adWhirlSingleton.m

#import "adWhirlSingleton.h"
@implementation adWhirlSingleton

static adWhirlSingleton* _sharedAdSingleton = nil;
@synthesize adView, displayVC;

+(id)sharedAdSingleton
{
@synchronized(self)
{
    if(!_sharedAdSingleton)
         _sharedAdSingleton = [[self alloc] init];
    return _sharedAdSingleton;
}
return nil;
}

+(id)alloc
{
@synchronized([adWhirlSingleton class])
{
    NSAssert(_sharedAdSingleton == nil, @"Attempted to allocate a second instance of a   singleton.");
    _sharedAdSingleton = [super alloc];
    return _sharedAdSingleton;
}

return nil;
}

-(id)init
{
self = [super init];
if (self != nil) {
    // initialize stuff here
    self.adView.delegate=self;
}
return self;
}

-(void)dealloc
{
displayVC = nil;
if (adView) {
    [adView removeFromSuperview]; //Remove ad view from superview
    [adView setDelegate:nil];
    adView = nil;
}
[super dealloc];
}

-(void)adjustAdSize:(CGFloat)x :(CGFloat)y
{
   [UIView beginAnimations:@"AdResize" context:nil];
   [UIView setAnimationDuration:0.7];
   adView.frame = CGRectMake(x, y, 320, 50);
   [UIView commitAnimations];
}

-(BOOL)adWhirlTestMode
{
  return YES;
}

-(NSString *)adWhirlApplicationKey
{
  return @"xxxxxxxxxxxxx";
}

-(UIViewController *)viewControllerForPresentingModalView
{
  return displayVC;
}

-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
  [self adjustAdSize:0 :410];
}

@end

myViewController.m

#import "adWhirlSingleton.h"

-(void)viewWillAppear:(BOOL)animated {

   adWhirlSingleton *adWhirlSingle = [adWhirlSingleton sharedAdSingleton];
   adWhirlSingle.displayVC = self;
   [adWhirlSingle adjustAdSize:0 :self.view.frame.size.height -50];
   [self.view addSubview:adWhirlSingle.adView];
   [self.view bringSubviewToFront:adWhirlSingle.adView];
   NSLog(@"Ad Banner View");
}

iAdこれは、これを実行するときにシングルトン クラスを実装した方法iAdで、ViewController に表示されませんでした。誰かがこれを実装する方法を知っている場合は、この問題から抜け出すのを手伝ってください。前もって感謝します。

4

0 に答える 0