我正在尝试在iOS应用中实现多个视图的simgle adbanner实例。要在视图控制器中实施Adbannerdelegate bannerview.delegate = self;bannerview是Adbannerview的实例。但是,必须在每个ViewController中实现此委托方法,该方法构成了许多重复代码。如何组成一个实现所有委托方法的简单类,然后在每个ViewController中使用它们。
我认为您正在使用的ViewController是UiviewController的子类。
您说的所有ViewControllers都有相同的代表方法。
所以,我要做的是通过子分类 代码像这样, .m文件 -> 现在您的一些ViewController-> UIViewController
创建新的ViewController类(UIDelgateViewController
),并在此处添加所有委托方法,并具有所有其他ViewControllers uidelgateViewController
.h文件 -> @interface UIDelegateViewController : UIViewController<ADBannerViewDelegate>
@property ADBannerView *bannerView;
@end
#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{
}
#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 = ..../
}
如果您想在导航和更改视图时始终在屏幕上保持相同的横幅一个很好的例子是Apple编写的出色的示例代码,该代码显示了如何在塔巴尔或导航控制器中移动时保持相同的横幅实例。这对您的项目也可能是一个很好的开始。