在UIViewController之外设置委托?

时间:2012-04-23 22:14:23

标签: iphone objective-c uiviewcontroller delegates iad

我试图尽可能地从主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'

我对代表们的这种特殊情况可能不是很了解,所以请原谅我可能的误解,但有可能以类似的方式实现我的需要吗?怎么样?

1 个答案:

答案 0 :(得分:1)

您将vc参数定义为UIViewController *。这意味着您可以在其中传递任何旧的视图控制器,而不一定是符合ADBannerViewDelegate协议的视图控制器。您应该定义vc参数,以便只能传递符合该协议的视图控制器:

+(void)initAdBannersInView:(UIView*)view andViewController:(UIViewController<ADBannerViewDelegate>*)vc{