2013-03-02 2 views
0

Я искал и менял код в течение 2 дней. Я использую xcode 4.5 и раскадровки. Я получил одобрение для работы над своим основным видом, но я добавил 50 других просмотров и получил пару предупреждений, и объявления не появятся.Admob с помощью раскадровки - UIView может не отвечать на viewDidLoad

// ViewMain2.h 

#import <UIKit/UIKit.h> 
#import "GADBannerView.h" 

@class GADBannerView, GADRequest; 
@interface ViewMain2 : UIView 
<GADBannerViewDelegate> { 
    GADBannerView *adBanner_; 
} 

@property (nonatomic, retain) GADBannerView *adBanner; 

- (GADRequest *)createRequest; 
- (UIView *)view; 

@end 

////////// ViewMain2.m 

#import "ViewMain2.h" 
#import "GADBannerView.h" 
#import "GADRequest.h" 

@implementation ViewMain2 

@synthesize adBanner = adBanner_; 

- (UIView *)view { 
    return (UIView *)self.view; 
} 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

#pragma mark init/dealloc 

// Implement viewDidLoad to do additional setup after loading the view, 
// typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Initialize the banner at the bottom of the screen. 
    CGPoint origin = CGPointMake(0.0, 
           self.view.frame.size.height - 
           CGSizeFromGADAdSize(kGADAdSizeBanner).height); 

    // Use predefined GADAdSize constants to define the GADBannerView. 
    self.adBanner = [[[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner 
                origin:origin] 
        autorelease]; 

    // Note: Edit SampleConstants.h to provide a definition for kSampleAdUnitID 
    // before compiling. 
    self.adBanner.adUnitID = @"a1512d23a796691"; 
    self.adBanner.delegate = self; 
    [self.adBanner setRootViewController:self]; 
    [self.view addSubview:self.adBanner]; 
    self.adBanner.center = 
    CGPointMake(self.window.center.x, self.adBanner.center.y); 
    [self.adBanner loadRequest:[self createRequest]]; 
} 

- (void)dealloc { 
    adBanner_.delegate = nil; 
    [adBanner_ release]; 
    [super dealloc]; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

#pragma mark GADRequest generation 

// Here we're creating a simple GADRequest and whitelisting the application 
// for test ads. You should request test ads during development to avoid 
// generating invalid impressions and clicks. 
- (GADRequest *)createRequest { 
    GADRequest *request = [GADRequest request]; 

    // Make the request for a test ad. Put in an identifier for the simulator as 
    // well as any devices you want to receive test ads. 
    request.testDevices = 
    [NSArray arrayWithObjects: 
    // TODO: Add your device/simulator test identifiers here. They are 
    // printed to the console when the app is launched. 
    nil]; 
    return request; 
} 

#pragma mark GADBannerViewDelegate impl 

// We've received an ad successfully. 
- (void)adViewDidReceiveAd:(GADBannerView *)adView { 
    NSLog(@"Received ad successfully"); 
} 

- (void)adView:(GADBannerView *)view 
didFailToReceiveAdWithError:(GADRequestError *)error { 
    NSLog(@"Failed to receive ad with error: %@", [error localizedFailureReason]); 
} 

@end 

Я получаю предупреждение "UIView не может ответить на viewDidLoad" на линии -> [супер viewDidLoad];

Я также получаю предупреждение «Несовместимые типы указателей, отправляющих ViewMain2 в параметр типа UIViewController» на линии -> [self.adBanner setRootViewController: self];

Я пробовал много учебников и поисков, но со всеми представлениями в раскадровке с именем UIView я борется. Спасибо за любую помощь!

ответ

0

Вы объявляете свой класс как подкласс UIView:

@interface ViewMain2 : UIView 

Однако, вы пытаетесь использовать его в качестве UIViewController. Определите, какой из них вы хотите - если контроллер представления, затем измените суперкласс на UIViewController, если вы видите, то не пытайтесь использовать его в качестве контроллера вида.

Смежные вопросы