2015-01-07 114 views
0

在我的應用程序,我已經通過代碼如何從iOS應用程序中的UIViewController中刪除ADBannerView?

在.h文件中

@property (strong, nonatomic) ADBannerView *adBannerView; 

在.m文件添加ADBannerViewUIViewController

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.adBannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, 518, 320, 50);]; 
    [self.view addSubview:self.adBannerView]; 
} 

#pragma mark - ADBannerViewDelegate 
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { 
    NSLog(@"bannerview did not receive any banner due to %@", error); 
} 

- (void)bannerViewActionDidFinish:(ADBannerView *)banner { 
    NSLog(@"bannerview was selected"); 
} 

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave { 
    NSLog(@"banner action should begin"); 
    return YES; 
} 

- (void)bannerViewWillLoadAd:(ADBannerView *)banner { 
    NSLog(@"banner will loaded"); 
} 

- (void)bannerViewDidLoadAd:(ADBannerView *)banner { 
    NSLog(@"banner was loaded"); 
} 

我的應用程序通常是,它可以顯示ADBannerView。但現在,我想從UIViewController中刪除ADBannerView,然後刪除了有關ADBannerView的所有代碼行。我可以建立我的應用程序,但它不能運行,則錯誤味精是:

Could not instantiate class named ADBannerView 

請幫我刪除ADBannerView。謝謝。

+0

您使用的故事板? – nburk

+0

查看更新回答。 –

回答

0
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{ 
if (!bannerIsVisible){ 
    //LOG_TYPE(@"AD show"); 
    [UIView beginAnimations:@"animateAdBannerOn" context:NULL]; 
    // banner is invisible now and moved out of the screen on 50 px 
    //   banner.frame = CGRectOffset(banner.frame, 0, -50); 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ 
     if (IS_IPHONE_5) { 
      //LOG_TYPE(@"view height: %f",self.view.bounds.size.height); 
      self.adView.frame = CGRectMake(0,568-49-50, self.view.frame.size.width, 50); 
     } 
     else{ 
      //LOG_TYPE(@"view height: %f",self.view.bounds.size.height); 
      self.adView.frame = CGRectMake(0,480-49-50, self.view.frame.size.width, 50); 
     } 
    } 
    else{ 
     self.adView.frame = CGRectMake(0,1024-56-50, self.view.frame.size.width, 50); 
    } 
    [UIView commitAnimations]; 
    bannerIsVisible = YES; 
    [self performSelector:@selector(hideAD) withObject:nil afterDelay:6]; 
} 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ 
if (bannerIsVisible){ 
    //LOG_TYPE(@"AD error"); 
    [UIView beginAnimations:@"animateAdBannerOff" context:NULL]; 
    // banner is visible and we move it out of the screen, due to connection issue 
//  banner.frame = CGRectOffset(banner.frame, 0, 50); 
    bannerIsVisible = NO; 
    [self performSelector:@selector(hideAD) withObject:nil afterDelay:0]; 
    //  [self performSelector:@selector(hideAD) withObject:nil afterDelay:5]; 
} 
} 

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{ 
//LOG_TYPE(@"Banner view is beginning an ad action"); 
BOOL shouldExecuteAction = YES; 
if (!willLeave && shouldExecuteAction){ 
    // stop all interactive processes in the app 
    // [video pause]; 
    // [audio pause]; 
} 
return shouldExecuteAction; 
} 

- (void)bannerViewActionDidFinish:(ADBannerView *)banner{ 
// resume everything you've stopped 
// [video resume]; 
// [audio resume]; 
} 

- (void)hideAD{ 
//LOG_TYPE(@"Hide AD"); 
[UIView beginAnimations:@"animateAdBannerOff" context:NULL]; 
// banner is visible and we move it out of the screen, due to connection issue 
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ 
    if (IS_IPHONE_5) { 
     //LOG_TYPE(@"view height: %f",self.view.bounds.size.height); 
     self.adView.frame = CGRectMake(0,568-49+50, self.view.frame.size.width, 50); 
    } 
    else{ 
     //LOG_TYPE(@"view height: %f",self.view.bounds.size.height); 
     self.adView.frame = CGRectMake(0,480-49+50, self.view.frame.size.width, 50); 
    } 
} 
else{ 
    self.adView.frame = CGRectMake(0,1024-56+50, self.view.frame.size.width, 50); 
} 
[UIView commitAnimations]; 
bannerIsVisible = NO; 

[self performSelector:@selector(bannerViewDidLoadAd:) withObject:self.adView afterDelay:60]; 
} 


-(void)viewDidLoad{ 
... 
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ 
    if (IS_IPHONE_5) { 
     self.adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0,568-49-50, self.view.frame.size.width, 50)]; 
    } 
    else{ 
     self.adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0,480-49-50, self.view.frame.size.width, 50)]; 
    } 
} 
else{ 
    self.adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0,1024-56-50, self.view.frame.size.width, 50)]; 
} 
[self.view addSubview:self.adView]; 
self.adView.delegate=self; 
bannerIsVisible=NO; 
self.adView.backgroundColor = [UIColor clearColor]; 
.... 
} 
+0

問題是關於從項目中移除橫幅,而不是在屏幕上或屏幕外移動它。 – ravron

+0

首先,在viewDidLoad中創建一個對象,不要採用AdBannerView的IBOutlet。接下來的事情,你應該嘗試[self.adView removeFromSuperView]; 。這會移除您的廣告。 –

+0

是的,我想將ADBannerView移出項目,而不是removeFromSuperView。 – Bentley

0

,如果你在故事板添加ADBannerView然後取出ADBannerView的IBoutlet及其delegate。如下圖所示爲ADBannerView

enter image description here

突破連接從腳本移除ADBannerView和你上面的代碼是完美的。

您的錯誤如下。

enter image description here

+0

是的,錯誤與您的錯誤相同。但是我不在故事板中添加ADBannerView,只是通過代碼添加。然後我刪除有關ADBannerView的所有代碼行,並且出現錯誤。 – Bentley

+0

刪除您的派生數據並清理您的項目。運行後的項目。可能工作正常。 –

+0

我刪除了派生數據和清理項目,但仍然錯誤。 – Bentley

-1
[self.adView removeFromSuperView]; 
相關問題