Come posso ottenere la vista attualmente attiva (la vista principale attualmente visualizzata dall'utente) dal delegato dell'app per l'amor di riferimento?Come ottenere la vista attiva in un'applicazione iOS dal delegato dell'app?
risposta
Dipende da come è stata configurata la tua app.
In genere, il delegato dell'app dispone di una proprietà del controller della vista principale che consente di raggiungerla.
Per ottenere la vostra applicazione delegato
MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
UIView *topView = appDelegate.viewController.view;
Se la vostra applicazione ha una proprietà controller di navigazione in app delegato si può fare qualcosa di simile.
UIView *topView = appDelegate.navigationController.topViewController.view;
La terza riga mi dà un errore: Proprietà 'navigationController' non trovata su oggetto di tipo 'kzAppDelegate' – zakdances
probabilmente non stai usando un controller di navigazione allora. Guarda la seconda riga di codice nella mia risposta. – Randall
Non funziona con le visualizzazioni modali! – skywinder
è possibile utilizzare [appDelegate.navigationController.topViewController class]
per registrare la classe del controller o ottenere la proprietà titolo per sapere quale sia.
Spero che questo ti aiuta
UINavigationController *navCnt = (UINavigationController *)self.window.rootViewController;
if([navCnt.topViewController isMemberOfClass:[WebViewController class]])
{
return UIInterfaceOrientationMaskAll;
}
else
return UIInterfaceOrientationMaskPortrait;
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIView *topView = window.rootViewController.view;
Non funziona con le visualizzazioni modali! – skywinder
Ovunque nel applicazione è possibile ottenere il vostro RootViewController View piace anche:
id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate];
UIView *rootView = appDelegate.window.rootViewController.view;
Non funziona con le visualizzazioni modali! – skywinder
Tutte le risposte migliori non funzionano col modale presentato visualizzazioni! Usa questo codice invece:
UIView * topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
funziona per me, grazie :) –
Ho trovato questo e funziona benissimo per me per tutti i tipi di segues e visualizzare i controllori.
+ (UIViewController *) getTopController { UIViewController * topViewController = [UIApplication sharedApplication] .keyWindow.rootViewController;
while (topViewController.presentedViewController) {
topViewController = topViewController.presentedViewController;
}
return topViewController;
}
Prova Eric's answer:
+ (UIViewController*) topMostController
{
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}
- 1. android - Come ottenere la vista dal contesto?
- 2. IOS 7 - Come ottenere indexPath dal pulsante inserito in UITableViewCell
- 3. Come ottenere la vista genitore dalla vista parziale
- 4. delegato all'azione. Come ottenere informazioni sui metodi chiamate in delegato?
- 5. Come ottenere la vista attiva corrente in una regione utilizzando PRISM?
- 6. Ottenere istanza di controllo finestra principale in applicazione delegato
- 7. come impostare un delegato per la vista tabella
- 8. Chiamare il metodo UIViewController dal delegato dell'app
- 9. Registrazione attiva con delegato e condizioni
- 10. NSNotifica o Delegato per registrare quando cambia la vista visibile
- 11. Come ottenere la vista nell'evento OnContextItemSelected?
- 12. iOS UIPickerView come ottenere la riga selezionata al di fuori del metodo delegato
- 13. iOS 8 Mapview Posizione corrente non attiva
- 14. Ottenere un riferimento al delegato dell'applicazione UIA
- 15. UISplitViewController su iPhone: apre/mostra la vista principale dal controller della vista dettagli
- 16. come scoprire se la sessione audio è attiva su iOS
- 17. come aggiornare dinamicamente la vista tabella in IOS?
- 18. Come modificare/cambiare la vista dal layout in RemoteView o creare RemoteView dalla vista?
- 19. Come aggiungere una vista dietro altra vista in iOS
- 20. Come convertire un delegato in delegato identico?
- 21. Ridisegnare una vista in ios
- 22. UIScroll Vista delegato non chiamare ScrollViewDidEndScrollingAnimation
- 23. Ottenere un delegato da methodinfo
- 24. Backbone.js - Aggiunta di eventi keydown quando la vista è attiva?
- 25. Come utilizzare una "vista container" in iOS?
- 26. Come ottenere il tipo Iphone dal simulatore (IOS)
- 27. IOS seleziona onchange non attiva
- 28. Come ottenere la riga di codice che attiva una query?
- 29. Come impostare il delegato del controller Vista Split da Storyboard?
- 30. pulsante barra ios pulsante per la vista modale
Definire "vista principale". Potrebbero esserci diversi sullo schermo contemporaneamente oggetti 'UIView' (e sottoclassi) sullo schermo. Quale ti aspetteresti di ottenere? –
Supponiamo che l'utente sia attualmente su una schermata per eseguire un'azione specifica, voglio ottenere il viewcontroller per la vista del contenitore per quella schermata – David
Dovrai tenerne traccia da solo. Come le viste, potrebbero essere attivi più di un controller di visualizzazione sullo schermo. –