2012-04-23 4 views
0

Я пытаюсь изолировать код инициализации iAd от основного UIViewController как можно больше, чтобы обеспечить легкую интеграцию для моих приложений в будущем. Я создал класс AdManager (NSObject) для работы с настройкой и инициализацией iAd. Однако я не знаю, как настроить делегаты для объектов вне UIViewController, которые реализуют эти классы делегатов. Например:Настройка делегата вне 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]; 

Error (предупреждение) сообщение: Присваивание 'ид' из несовместимых типа 'UIViewController'

я могу не очень хорошо с этой конкретной ситуацией о делегатах, так что помилуй мое возможное недоразумение, но возможно ли добиться того, что мне нужно аналогичным образом? Как?

ответ

1

Вы определяете аргумент vc как UIViewController *. Это означает, что вы можете передать любой старый контроллер просмотра там, не обязательно тот, который соответствует протоколу ADBannerViewDelegate. Вы должны определить аргумент vc, чтобы вы могли передавать только контроллеры просмотра, соответствующие этому протоколу:

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

Это исправило мою ошибку. Спасибо. – Vad

Смежные вопросы