배경 : 지난 주에 여러 개의 viewControllers에서 adWhirl을 사용하는 것에 대해 질문을했지만 불행히도 아직 이해가 안갑니다. 모든 viewController를 adWhirl 대리자로 만들지 않으려면 어떻게해야하나요? (AdWhirl 디자인 패턴이 있습니까?)
내가 제안을했다 지금은 애플 대리자에서 생성 한 애드 월의 인스턴스를 사용, 각각의 ViewController에서하지만 난 응용 프로그램 이후 (등adWhirlDidReceiveAd:, adWhirlDidFailToReceiveAd:
) 내의 ViewController에서 애드 월 대의원 이벤트에 응답 할 수있는 방법이 표시되지 않습니다 delegate는 현재 어떤 viewController가 해당 adView를 표시하고 있는지 알지 못합니다.
따라서 내 혼란 ...
디자인 패턴이 있습니까? 내가 있어야 할 것 같아. 피할 수만 있다면 모든 보편적 인 adWhirl 대리자 코드를 사용하여 모든 뷰 컨트롤러를 관리하고 싶지 않습니다.
각 viewController에서 지금 얻은 내용은 다음과 같습니다. 나는 각각의 뷰 컨트롤러가 "위임 (delegate)이 adWhirlDidReceiveAd
과 같은 이벤트를받을 때, 아래의 작업을 할 수 있다고 생각하는 앱 위임자의 adView의 소유권을 가져 오는"등록 "이라고 부를 수있는 앱 위임의 메소드를 설정하려고 시도했다. 이런 종류의 일은 제가 바퀴를 다시 발명한다고 생각하게 만듭니다.
질문 : 여러 viewControllers에서 adWhirl보기를 사용하기위한 디자인 패턴이 있습니까?
- (void)viewDidLoad
{
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[self.view addSubview:appDelegate.adView];
[self.view bringSubviewToFront:appDelegate.adView];
CGSize adSize = [appDelegate.adView actualAdSize];
CGRect onScreenFrame = appDelegate.adView.frame;
onScreenFrame.size.height = adSize.height; // fit the ad
onScreenFrame.size.width = adSize.width;
onScreenFrame.origin.x = (self.view.frame.size.width - adSize.width)/2; // center
onScreenFrame.origin.y = (self.view.frame.size.height - adSize.height);
appDelegate.adView.frame = onScreenFrame;
}
- (void)viewDidDisappear:(BOOL)animated
{
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate.adView removeFromSuperview];
}
감사합니다. 작동 중입니다. 초보자에게는 그리 명백하지 않습니다 ... –