2015-01-07 15 views
0

В моем приложении, я добавил ADBannerView в UIViewController кодомКак удалить ADBannerView из UIViewController в моем приложении iOS?

в файле .h

@property (strong, nonatomic) ADBannerView *adBannerView; 

в .m файл

- (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. Но теперь, я хочу удалить ADBannerView из UIViewController, затем я удалил все строки кода о 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, не принимайте IBOutlet AdBannerView. Следующее, вы должны попробовать [self.adView removeFromSuperView]; , Это приведет к удалению вашего объявления. –

+0

Да, я хочу удалить ADBannerView из проекта, а не removeFromSuperView. – Bentley

0

если добавить ADBannerView в раскадровке затем удалить IBoutlet из ADBannerView и его delegate.

соединение перерыв на рисунке ниже для ADBannerView

enter image description here

удалить ADBannerView из раскадровки и ваш код выше совершенен.

Ваша ошибка, как показано ниже.

enter image description here

+0

Да, ошибка совпадает с вашей ошибкой. Но я не добавляю ADBannerView в раскадровку, я просто добавляю код. И затем я удаляю все строки кода об ADBannerView и получаю ошибку. – Bentley

+0

удалите полученные данные и очистите проект. после запуска проекта. может работать нормально. –

+0

Я удалил проект Derived Data and Clean, но все еще ошибка. – Bentley