单个ADBannerViewDelegate用于多个视图

时间:2014-01-23 17:21:19

标签: ios iad adbannerview

我正在尝试在iOS应用中为多个视图实施simgle AdBanner实例。要在viewController中实现AdbannerDelegate,必须要做     bannerview.delegate = self; 其中bannerview是AdBannerView的一个实例。然而,这种委托方法必须在每个viewController中实现,这种方法总共需要很多重复代码。我如何组成一个实现所有委托方法的简单类,然后我调用它们在每个viewController中使用它们。

2 个答案:

答案 0 :(得分:2)

我认为你正在使用的viewControllers是UIViewController的子类 你说所有的viewControllers都有相同的委托方法。

所以,我想要做的是通过SubClassing UIDelgateViewController创建新的ViewController类(UIViewController)并在那里添加所有委托方法,并且所有其他viewControllers子类UIDelgateViewController

代码就是这样,
.h文件 - >

@interface UIDelegateViewController : UIViewController<ADBannerViewDelegate>
@property ADBannerView *bannerView;
@end

.m文件 - &gt;

#import "UIDelegateViewController.h"

@interface UIDelegateViewController ()

@end

@implementation UIDelegateViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    _bannerView = [[ADBannerView alloc] init];
    _bannerView.delegate =self;
}

-(void)bannerDelegateMethod{

}

现在你的一些viewController - &gt;

#import "UIDelegateViewController.h"

@interface SomeViewController : UIDelegateViewController

@end


#import "SomeViewController.h"

@interface SomeViewController ()

@end

@implementation SomeViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self.view addSubview:self.bannerView];
    self.bannerView.frame = ..../
}

答案 1 :(得分:1)

如果您想在导航和更改视图时始终在屏幕上保持相同横幅,则应考虑使用View Controller containtment API
一个很好的例子是remarkable sample code written by Apple,它显示了如何在标签栏或导航控制器中移动时保持相同的横幅实例。这对你的项目来说也是一个很好的开始。