我试图尽可能地从主UIViewController中隔离iAd初始化代码,以便在将来轻松集成我的应用程序。我创建了AdManager(NSObject)类来处理iAd设置和初始化。但是,我不知道如何为实现这些委托类的UIViewController之外的对象设置委托。例如:
@interface AppViewController : UIViewController<ADBannerViewDelegate>
我的AdManager会有这样的内容:
+(void)initAdBannersInView:(UIView*)view andViewController:(UIViewController*)vc{
ADBannerView *iAdBannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, -bannerSize.height, bannerSize.width, bannerSize.height)];
iAdBannerView.delegate = vc;
[view addSubview:iAdBannerView];
错误(警告)消息是:从不兼容类型'UIViewController'
分配给'id'我对代表们的这种特殊情况可能不是很了解,所以请原谅我可能的误解,但有可能以类似的方式实现我的需要吗?怎么样?
答案 0 :(得分:1)
您将vc
参数定义为UIViewController *
。这意味着您可以在其中传递任何旧的视图控制器,而不一定是符合ADBannerViewDelegate
协议的视图控制器。您应该定义vc
参数,以便只能传递符合该协议的视图控制器:
+(void)initAdBannersInView:(UIView*)view andViewController:(UIViewController<ADBannerViewDelegate>*)vc{