0

私は2日間コードを検索して変更しています。私はxcode 4.5とストーリーボードを使用しています。メイン ビューで動作するように admob を取得しましたが、他に 50 以上のビューを追加したところ、いくつかの警告が表示され、広告が表示されません。

//  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 に応答しない可能性があります」という警告が表示されます -> [super viewDidLoad];

また、行に「互換性のないポインター型が UIViewController 型のパラメーターに ViewMain2 を送信しています」という警告が表示されます -> [self.adBanner setRootViewController:self];

多くのチュートリアルと検索を試しましたが、UIView という名前のストーリーボードのすべてのビューで苦労しています。助けてくれてありがとう!

4

1 に答える 1

0

クラスを のサブクラスとして宣言しますUIView

@interface ViewMain2 : UIView 

ただし、として使用しようとしていますUIViewController。必要なものを決定します。ビュー コントローラーの場合は、スーパークラスを に変更しますUIViewController。ビューの場合は、それをビュー コントローラーとして使用しないでください。

于 2013-03-02T20:13:19.457 に答える