2014-01-23 4 views
2

iOS 앱에서 여러보기에 대해 단순한 AdBanner 인스턴스를 구현하려고합니다. viewController에서 AdbannerDelegate를 구현하려면 을 사용해야합니다. bannerview.delegate = self; 여기서 bannerview는 AdBannerView의 인스턴스입니다. 그러나이 델리게이트 메소드는 반복적 인 코드가 많은 모든 viewController에 구현되어야합니다. 어떻게 모든 델리게이트 메소드를 구현하는 간단한 클래스를 만들 수 있으며 모든 viewController에서 사용하도록 요청합니다.여러보기에 대해 단일 ADBannerViewDelegate

답변

2

당신이 사용하고있는 viewController는 UIViewController의 서브 클래스라고 생각합니다.
그리고 모든 viewController가 동일한 대리자 메서드를 가지고 있다고 말하고 있습니다.

그래서, 내가 뭘 원하는 UIViewController를 서브 클래스 새의 ViewController 클래스 (UIDelgateViewController)를 만들고 거기에 모든 대리자 메서드를 추가하고 다른 모든 viewControllers가 UIDelgateViewController 서브 클래스가 있습니다.

코드는 이렇게 가고,
.H 파일 ->

@interface UIDelegateViewController : UIViewController<ADBannerViewDelegate> 
@property ADBannerView *bannerView; 
@end 

하는 .m 파일 ->

#import "UIDelegateViewController.h" 

@interface UIDelegateViewController() 

@end 

@implementation UIDelegateViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    _bannerView = [[ADBannerView alloc] init]; 
    _bannerView.delegate =self; 
} 

-(void)bannerDelegateMethod{ 

} 

이제 일부의 ViewController ->

#import "UIDelegateViewController.h" 

@interface SomeViewController : UIDelegateViewController 

@end 


#import "SomeViewController.h" 

@interface SomeViewController() 

@end 

@implementation SomeViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    [self.view addSubview:self.bannerView]; 
    self.bannerView.frame = ..../ 
} 
+0

시도했습니다. 그것은 잘 작동하지만 어딘가에 응용 프로그램을 실행하면 오류가 발생하여 exc_bad_access 오류가 발생합니다. 내 생각에 uiviewController 일부가 사라지는 것 같습니다. – asadullah07

+0

업데이트 된 답변 확인 – santhu

+0

코드에 대해 많은 것을 Thnaks. UITableView 및 UIScrollview 같은 viewController 다른 하위 뷰를 사용하고 있습니다. 하나의 AdBannerDelegate 메소드에서 이러한 모든 변경 사항 (다른 넷 하위 뷰 크기 조정)을 통합하려면 어떻게해야합니까? – asadullah07

1

보기를 탐색하고 변경하는 동안 항상 동일한 배너를 화면에 유지하려면 사용을 고려해야합니다. View Controller containtment API
큰 막대기의 예로는 remarkable sample code written by Apple인데, 이는 Tabbar 또는 탐색에서 이동하는 동안 동일한 배너 인스턴스를 유지하는 방법을 보여줍니다 제어 장치. 프로젝트를 시작하기에 좋은 출발점이 될 수도 있습니다.