2016-02-11 15 views
8

Jestem nowy w projekcie POD. Chcę zaktualizować viewPontrollers projektu pod, w tym celu trzeba uzyskać dostęp do klasy AppDelegate w Pod Project.Jak zaimportować plik AppDelegate.h w podglądzie ViewController?

Próbowałem zaktualizować plik konfiguracji Pod, aby uzyskać dostęp do AppDelegate, ale nie udało się uzyskać sukcesu.

+0

Dlaczego tego chcesz? To nie są idealne rzeczy, które powinieneś zrobić. –

+0

Zamiast korzystać z klas projektu w projekcie pod użyć klas pod w projekcie. Utwórz instancję klasy pod i zaktualizuj wszystko z klasy 'AppDelegate'. Wyjaśnij także więcej o swoim wymaganiu Myślę, że może istnieć lepszy i łatwiejszy sposób spełnienia Twoich wymagań. – TheTiger

+0

Dziękuję za odpowiedź, ale chcę uzyskać dostęp do mojego obiektu tablicy 'AppDelegate' w celu utworzenia klas projektu, co oznacza, że ​​dostęp do każdej klasy strąków zostanie zaktualizowany za pomocą obiektu tablicy' AppDelegate'. – Swapnil1156035

Odpowiedz

1

Naprawdę nie chcesz tworzyć cyklicznej zależności między aplikacją a banerem. Zalecanym sposobem jest zdefiniowanie protokołu w bloku i sprawdzenie, czy AppDelegate implementuje ten protokół.

@protocol PodArrayProvider 
    - (NSArray *)arrayToAccess: 
@end 

// in AppDelegate.m 
#import <Pod/Pod.h> 

@extension AppDelegate() <PodArrayProvider> 
@end 

@implementation AppDelegate 
- (NSArray *)arrayToAccess 
{ 
    return self.realArray; 
} 
@end 

// then in your pod, you can do: 
id<PodArrayProvider> arrayProvider = (id<PodArrayProvider>)[[UIApplication sharedApplication] delegate]; 
NSAssert([arrayProvider conformsTo:@protocol(PodArrayProvider)], @"bad app delegate!"); 
NSArray *things = [arrayProvider arrayToAccess]; 

Coś jak powyższa struktura powinna zadziałać, ale chciałbym zachęcić do ponownego przemyślenia tej architektury. Pakiet jest zależny od aplikacji i nie powinien nic wiedzieć o aplikacji. Aplikacja powinna podpowiadać podajnikowi wszystko, co musi wiedzieć.

Powiązane problemy