我正在尝试在 iOS 应用程序中为多个 View 实现 simgle AdBanner 实例。要在 viewController 中实现 AdbannerDelegate,必须执行以下操作 横幅 View .委托(delegate)= self ; 其中bannerview 是AdBannerView 的实例。然而,这个委托(delegate)方法必须在每个 viewController 中实现,这会导致大量重复代码。如何构建一个实现所有委托(delegate)方法的简单类,然后在每个 viewController 中调用使用它们。
最佳答案
我认为您使用的 viewController 是 UIViewController 的子类。
你是说所有的 viewController 都有相同的委托(delegate)方法。
所以,我想做的是通过子类化UIViewController
创建新的ViewController类(UIDelgateViewController
)并在那里添加所有委托(delegate)方法,并拥有所有其他方法viewControllers 子类 UIDelgateViewController。
代码是这样的,
.h 文件->
@interface UIDelegateViewController : UIViewController<ADBannerViewDelegate>
@property ADBannerView *bannerView;
@end
.m 文件 ->
#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 ->
#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 = ..../
}
关于ios - 用于多个 View 的单个 ADBannerViewDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315148/