recursiveDescription
è molto utile durante il debug di una gerarchia di viste. Visualizza le gerarchie controller sono anche molto importanti, c'è un equivalente per questo?Esiste un metodo recursiveDescription per la gerarchia del controller di visualizzazione?
risposta
Aggiornamento - una funzionalità simile è ora disponibile in formato Apple come metodo _printHierarchy
, quindi non è più necessaria questa categoria.
ora c'è:
Github: Recursive description category for view controllers.
Aggiunge un metodo recursiveDescription
a UIViewController
che stampa la gerarchia del controller di visualizzazione. Eccellente per verificare se si stanno aggiungendo e rimuovendo correttamente i controller di visualizzazione figlio.
il codice è molto semplice, incluso anche qui, come il link GitHub sopra:
@implementation UIViewController (RecursiveDescription)
-(NSString*)recursiveDescription
{
NSMutableString *description = [NSMutableString stringWithFormat:@"\n"];
[self addDescriptionToString:description indentLevel:0];
return description;
}
-(void)addDescriptionToString:(NSMutableString*)string indentLevel:(NSInteger)indentLevel
{
NSString *padding = [@"" stringByPaddingToLength:indentLevel withString:@" " startingAtIndex:0];
[string appendString:padding];
[string appendFormat:@"%@, %@",[self debugDescription],NSStringFromCGRect(self.view.frame)];
for (UIViewController *childController in self.childViewControllers)
{
[string appendFormat:@"\n%@>",padding];
[childController addDescriptionToString:string indentLevel:indentLevel + 1];
}
}
@end
per mettere la risposta in modo conciso, io uso il seguente comando nella console di debug di Xcode per stampare la gerarchia View Controller:
po [[[UIWindow keyWindow] rootViewController] _printHierarchy]
PS Funziona solo su ios8 e successivi ed è pensato solo per scopi di debug.
Link all'articolo che mi ha aiutato a scoprire questo e molte altre tecniche di debug brillanti è this
Edit 1: In Swift 2 è possibile stampare la gerarchia da:
UIApplication.sharedApplication().keyWindow?.rootViewController?.valueForKey("_printHierarchy")
Edit 2: In Swift 3 è possibile stampare la gerarchia di:
UIApplication.shared.keyWindow?.rootViewController?.value(forKey: "_printHierarchy")
In Swift: 'UIApplication.sharedApplication(). KeyWindow? .rootViewController? .valueForKey (" _ printHierarchy ")' –
Grazie. Lo aggiungerò alla risposta. – jarora
metodo più veloce (in lldb debugger/Xcode):
po [UIViewController _printHierarchy]
_printHierarchy non fornisce informazioni ricorsivo per la vista sub componente di vista di VC.
Metodo 1: Utilizzare il comando lldb per ottenere la gerarchia di visualizzazione completa.
po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
Approccio 2: modo migliore per ottenere tutte le informazioni utilizzando il pulsante “Debug View gerarchia” dal debugger XCode.
Ehm, è carino, ma la domanda menziona recursiveDescription e sto cercando un equivalente per la gerarchia del controller di visualizzazione. – jrturton
- 1. Come caricare un altro controller di visualizzazione dal file di implementazione del controller di visualizzazione corrente?
- 2. Visualizzazione di una logica del metodo C#
- 3. Visualizzazione gerarchia non rispettata - UI Route (Ionic)
- 4. Caricamento di un controller di visualizzazione e visualizzazione della gerarchia in modo programmatico in Cocoa Touch senza xib
- 5. Ruota visualizzazione gerarchia 90 gradi
- 6. Transizione del controller di visualizzazione interattiva dal controller di visualizzazione con barra di stato nascosta
- 7. Gerarchia di chiamata metodo ruby
- 8. Esegui l'azione del controller MVC senza visualizzazione?
- 9. Visualizzazione di una gerarchia (albero) utilizzando knockoutjs
- 10. Un controller di visualizzazione presentato può anche essere un controller di visualizzazione presentante?
- 11. Presenta un controller di visualizzazione modale con sfondo trasparente
- 12. Xcode 7.3 La gerarchia di visualizzazione del debug del simulatore iOS 8 è vuota
- 13. Ridimensiona i controller di visualizzazione principale e di dettaglio in un controller di visualizzazione divisa?
- 14. ionico: esiste un modo per eliminare la cache nel metodo controller?
- 15. ios: come eliminare un controller di visualizzazione modale e quindi inserire un controller di visualizzazione spinto
- 16. Utilizzo del metodo bindData all'esterno del controller
- 17. 'Ho cercato di passare a un controller di visualizzazione che non esiste.'
- 18. Esiste un modo per ignorare un'azione di MVC Controller?
- 19. Visualizzazione Gerarchia completa su Agile Consiglio
- 20. Esiste un metodo init per la classe di azione struts2?
- 21. Esiste un metodo di supporto per la pluralizzazione in Rails?
- 22. Chiamare un metodo di controller in un altro controller Ember
- 23. Collegamento di controller di visualizzazione figlio a un controller di visualizzazione padre nello storyboard
- 24. visualizzazione Eclipse per catena di chiamata di metodo
- 25. Impedire l'autorotazione per un controller di visualizzazione ios7?
- 26. Esiste un equivalente python del toolkit di visualizzazione prefuse?
- 27. Esiste un metodo Groovy per sincronizzare un metodo?
- 28. Esiste un buon metodo per analizzare la stringa user-agent?
- 29. Esiste un metodo "HasNext" per un IEnumerator?
- 30. Test se viene eseguito performSegueWithIdentifier all'interno di un metodo di visualizzazione controller
+1,5 Ben giocato, signore. – Caleb