2011-08-01 20 views
0

私はiPhoneのゲームに広告を統合しようと3日間続けました。私はmobfoxを選びました。Objective-Cのスキルが適切でないレベルに直接リンクされていることを除けば、細部まではうまくいきました。bringSubviewToFrontを呼び出すとエラーが発生します

私は広告がUI要素によって覆い隠されることを除いて、すべて機能しています。だから私は、フロントに広告を持参したいと周りGoogleで検索し、これを理解するために管理:

[self.view bringSubviewToFront:bannerView]; 

しかし、コードは(無効)のviewDidLoadであるように一度だけ動作すること。私はその後、私のコードの他の場所、UIのinitなどで同じコードを使用しようとしましたが、私は、バナービューが宣言されていないというエラーを取得します。私はかなりxcodeが私に言っていることを理解していますが、私はそれを単に宣言してやることはできません。

私がしたいことは、バナービューをコード内の任意の場所から自由に正面に持っていくことです。 私を助けることができますか?

敬具 マーカス

以下

mobfoxコード

次は、これは私が希望ののviewDidLoad

//MOBFOX STARTS HERE 
#pragma mark MobFox Delegate 

- (NSString *)publisherIdForMobFoxBannerView:(MobFoxBannerView *)banner 
{ 
    return kMyMobFoxPublisherId; 
} 

- (void)mobfoxBannerViewDidLoadMobFoxAd:(MobFoxBannerView *)banner 
{ 
    NSLog(@"MobFox: did load ad and placed on screen"); 

    // animate banner into view 
    //[UIView beginAnimations:@"MobFox" context:nil]; 
    //[UIView setAnimationDuration:1]; 
    banner.frame = CGRectMake(135, 140, 320, 50); 
    [UIView commitAnimations]; 


} 

- (void)mobfoxBannerView:(MobFoxBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
    NSLog(@"MobFox: did fail to load ad: %@", [error localizedDescription]); 

    // animate banner outside view 
    //[UIView beginAnimations:@"MobFox" context:nil]; 
    //[UIView setAnimationDuration:1]; 
    banner.frame = CGRectMake(-800, self.view.bounds.size.height - 240, 320, 50); 
    [UIView commitAnimations]; 
} 


//MOBFOX ENDS HERE 

例の直後にあるのviewDidLoad

// MOBFOX Starts 
    // create the banner view just outside of the visible area 
    MobFoxBannerView *bannerView = [[MobFoxBannerView alloc] initWithFrame: 
            CGRectMake(-800, self.view.bounds.size.height - 240, 320, 50)]; 
    bannerView.delegate = self; // triggers ad loading 
    //bannerView.backgroundColor = [UIColor darkGrayColor]; // fill horizontally 
    bannerView.transform = CGAffineTransformMakeRotation(M_PI/2.0); //MARCUS haxx 
    //bannerView.refreshAnimation = UIViewAnimationTransitionCurlDown; 
    [self.view addSubview:bannerView]; 
    [self.view bringSubviewToFront:bannerView]; 
    NSLog(@"MobFox: Ad initated and placed offscreen"); 

    // 

になっていますbringSubViewToFront:bannを呼び出すのが好きですerViewしかし、あなたは、インスタンス変数、またはIVARを追加する必要が

-(void) settitleMenuToFront { 

[self.view bringSubviewToFront:titleScreenImg]; 
[self.view bringSubviewToFront:highScoreTable]; 
[self.view bringSubviewToFront:ContinueButton]; 
[self.view bringSubviewToFront:highscoreButton]; 
[self.view bringSubviewToFront:newgameButton]; 
if (loadingScreen.alpha > 1) { 
    [self.view bringSubviewToFront:loadingScreen]; 
} 

}

+0

プライベートである必要があるかどうかはわかりませんが、実際の広告配信者IDを投稿しただけではありませんか? :) – Vladimir

答えて

0

することはできません。これを行う最も簡単な方法は、プロパティを追加し、プロパティ値を格納する変数(ivar)をコンパイラに追加させることです。その後-dealloc

-(void)dealloc { 
    // ... 
    [bannerView release]; 
} 

@synthesize bannerView; 

リリース、それを:上部付近の行を追加し、あなたの実装では

@property (nonatomic, retain) MobFoxBannerView *bannerView; 

:あなたのヘッダファイルで

は、行を追加します。ビューを作成するときは、プロパティを設定します。

self.bannerView = [[[MobFoxBannerView alloc] initWithFrame: 
         CGRectMake(-800, self.view.bounds.size.height - 240, 320, 50)] 
        autorelease]; 

次に、コードの残りの部分でself.bannerViewを参照できます。

+0

あなたの返信に感謝します。私はこれをどうやって行うのか分からないことを恥ずらしく認めなければならない。 コードは請負業者によって書かれているので、私はそのような単純なことをすることができない理由を説明するかもしれません。私は試行錯誤しています。 –

+0

恐ろしい、私は今これを試してみよう! –

+0

それはトリックでした!どうもありがとう –

0

リリースするインスタンス変数を作成し、viewDidUnloadにnilに設定してから、deallocに解放する必要があります。 Appleのllvm 2を使用している場合はclass extensionでこれを行うことができます。そうでない場合はheader fileに追加してください。

関連する問題