【问题标题】:Setting Delegate Outside UIViewController?在 UIViewController 之外设置委托?
【发布时间】:2012-04-23 22:14:23
【问题描述】:

我正在尝试尽可能地将 iAd 初始化代码与主 UIViewController 隔离开来,以便将来轻松集成我的应用程序。我创建了 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”

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

【问题讨论】:

    标签: iphone objective-c uiviewcontroller delegates iad


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多