2013-05-27 9 views
6

Sto provando a creare un'app molto semplice. È solo un browser web super semplice con 3 pagine. 3 webview, 2 nascoste in ogni momento.Modifica della visibilità degli elementi della finestra da una WebView sottoclasa

I suddivisione in gruppi di WebView per essere in grado di catturare gli eventi di tasto mentre si è focalizzati. Questa parte funziona.

Ora ho bisogno di richiamare a casa e modificare la visibilità degli altri WebViews quando premo CMD + 1, CMD + 2, CMD + 3 (1 mostrerebbe la prima webview, nasconderò altri 2, ecc.).

Ho cercato di pensare a come utilizzare i delegati per raggiungere il mio obiettivo, ma la mia mancanza di conoscenza mi impedisce di terminare questa semplice app.

Ho anche sentito parlare di NSNotification, la mia WebView potrebbe inviare una notifica che la mia finestra potrebbe catturare e modificare la visibilità dei suoi figli, ma non sono sicuro di come ottenerli.

Chiunque potrebbe indicarmi la direzione giusta per favore?

TLDR; Quando una WebView cattura una CMD + 1, ad esempio, voglio essere in grado di chiamare un metodo nelle altre WebViews per ottenerle nascoste.

Grazie e buona giornata!

+0

Siamo spiacenti ma la tua domanda/problema non è sufficientemente specifica. Stai praticamente chiedendo come mostrare o nascondere una vista? La giusta direzione sarebbe quella di fare un po 'di lettura su AppKit. https://developer.apple.com/library/mac/navigation/#section=Resource%20Types&topic=Getting%20Started –

+0

Quando una WebView cattura un CMD + 1, ad esempio, voglio essere in grado di chiamare un metodo nell'altro WebView per nasconderle. Questo è esattamente ciò che mi piacerebbe fare. Scusa per essere stato così vago e grazie per aver risposto! – TomShreds

risposta

1

Utilizzando le notifiche: dire dove si cattura il colpo di chiave si dispone di un oggetto NSString contenente un ID per identificare la WebView desiderata (ad esempio @"1" o @"2" ecc. e ogni vista Web ha una proprietà viewID. Allora, dove si riceve il tratto chiave, dovreste aggiungere:

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

Da qualche parte dove la vostra vista web viene inizializzato (ad esempio -awakeFromNib o -init), si aggiunge questo codice:

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

Poi implementare il -switchViewNotification: metodo:

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

    NSString *newViewID=[aNotification object]; 

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

parte finale: è necessario rimuovere l'osservatore quando la visualizzazione web va via, quindi aggiungere questo al tuo metodo di -dealloc:

[[NSNotificationCenter defaultCenter]removeObserver:self]; 

Che dovrebbe farlo.

0

se ho capito bene la tua domanda credo che per il salvataggio dei piccoli Stati attraverso l'applicazione è possibile utilizzare NSUserDefaults, ecco una Example

Spero aiutato, Buona fortuna :)

+0

Oh, suppongo che abbia davvero spiegato male la mia domanda. Ad esempio, se una WebView rileva una CMD + 1, desidero poter richiamare un metodo nelle altre WebViews per ottenerle nascoste. In un certo senso, potrei essere in grado di farlo con quello che mi hai detto. Proverò qualcosa: P Grazie per la risposta! – TomShreds

Problemi correlati