asadullah07
asadullah07

Reputation: 1641

Single ADBannerViewDelegate for multiple views

I'm trying to implement simgle AdBanner instance for multiple views in an iOS app. For implementing AdbannerDelegate in a viewController one has to do bannerview.delegate= self; where bannerview is an instance of AdBannerView. This delegate method however has to be implemented in every viewController which amounts up to a lot of repeating code. How can I make up a simple class that implements all delegate methods and then I call use them in every viewController.

Upvotes: 2

Views: 397

Answers (2)

Andrea
Andrea

Reputation: 26383

If you want to keep always on the screen the same banner while navigating and changing views, you should consider to use View Controller containtment API
A great example is that remarkable sample code written by Apple, that shows how to keep the same banner instance while moving in a tabbar or navigation controller. It could be also a great start for you project.

Upvotes: 1

santhu
santhu

Reputation: 4792

I think the viewControllers you are using are subclasses of UIViewController.
And you are saying all the viewControllers have the same delegate methods.

So,what i want to do is create new ViewController class (UIDelgateViewController) by SubClassing UIViewController and add all delegate methods there , and have all the other viewControllers subclass UIDelgateViewController.

The code goes like this,
.h file->

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

.m file ->

#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{

}

Now your Some viewController ->

#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 = ..../
}

Upvotes: 2

Related Questions