2013-05-27 10 views
6

Próbuję zrobić bardzo prostą aplikację. To tylko super prosta przeglądarka internetowa z 3 stronami. 3 webview, 2 ukryte przez cały czas.Zmiana widoczności elementu okna z podklasy WebView

Poddałem podklasę WebView, aby móc skupić się na uderzeniach klawiszy. Ta część działa.

Teraz musiałbym oddzwonić do domu i zmienić widoczność innych WebViews po naciśnięciu CMD + 1, CMD + 2, CMD + 3 (1 wyświetliłby pierwszy widok, ukrył 2 inne itd.).

Starałem się myśleć o tym, jak korzystać z delegatów, aby osiągnąć mój cel, ale mój brak wiedzy powstrzymuje mnie przed ukończeniem tej prostej aplikacji.

Słyszałem również o NSNotification, mój WebView mógł wysłać powiadomienie, że moje okno może złapać i zmienić widoczność swoich dzieci, ale nie jestem pewien, jak to osiągnąć.

Czy ktoś może wskazać mi właściwy kierunek, proszę?

TLDR; Gdy WebView przechwytuje CMD + 1 na przykład, chcę móc wywołać metodę w innych WebViewach, aby je ukryć.

Dzięki i życzę miłego dnia!

+0

Przepraszamy, ale Twoje pytanie/problem nie jest wystarczająco szczegółowy. Zasadniczo pytasz, jak pokazać lub ukryć widok? Właściwym kierunkiem byłoby zrobienie lektury o AppKit. https://developer.apple.com/library/mac/navigation/#section=Resource%20Types&topic=Getting%20Started –

+0

Gdy na przykład WebView przechwytuje CMD + 1, chcę móc wywołać metodę w innym WebViews, aby je ukryć. Właśnie to chciałbym zrobić. Przepraszamy za bycie tak niejasnym i dzięki za odpowiedź! – TomShreds

Odpowiedz

1

Korzystanie powiadomienia: powiedz, gdzie chwytasz klucz, masz obiekt NSString zawierający jakiś identyfikator identyfikujący żądany WebView (na przykład @"1" lub @"2" itp.), a każdy widok sieci ma właściwość viewID. Więc gdzie otrzymaliśmy klucz udar mózgu, można dodać:

[[NSNotificationCenter defaultCenter] 
    postNotificationName:@"ChangeMyActiveWebView" 
    object:newViewID // <- contains string to identify the desired web view 
]; 

Gdzieś, gdzie widok jest zainicjowany internetowej (np -awakeFromNib lub -init), należy dodać ten kod:

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(switchViewNotification:) 
    name:@"ChangeMyActiveWebView" 
    object:nil // Means any object 
]; 

Następnie wdrożenie -switchViewNotification: metody:

- (void)switchViewNotification:(NSNotification *)aNotification { 

    NSString *newViewID=[aNotification object]; 

    if([self.viewID isEqualToString:newViewID]) 
    { 
     // show this web view 
    } 
    else 
    { 
     // hide this web view 
    } 
} 

końcowy fragment: trzeba usunąć obserwatora gdy widok internetowa odchodzi, więc dodać do swojej metody -dealloc:

[[NSNotificationCenter defaultCenter]removeObserver:self]; 

To powinno wystarczyć.

0

gdybym zrozumiał swoje pytanie poprawnie myślę, że za ratowanie małych państw w całej aplikacji można użyć NSUserDefaults, tutaj jest Example

Mam nadzieję, że pomogłem, powodzenia :)

+0

Och, chyba naprawdę źle wyjaśniłem moje pytanie. Kiedy WebView przechwytuje CMD + 1 na przykład, chcę móc wywołać metodę w innych WebViewach, aby je ukryć. W pewnym sensie mógłbym to zrobić za pomocą tego, co mi powiedziałeś. Spróbuję czegoś: P Dziękuję za odpowiedź! – TomShreds

Powiązane problemy