2013-01-07 17 views

cevap

17

Güncelleştirme - Benzer işlevsellik, Apple tarafından sağlanan formda _printHierarchy yöntemi olarak kullanıma sunulmuştur, bu nedenle artık bu kategoriye ihtiyacınız yoktur.

şimdi yok:

Github: Recursive description category for view controllers.

Bu, görünüm denetleyicisi sıradüzenini basan UIViewController için recursiveDescription yöntemini ekler. Çocuk görüş kontrol cihazlarınızı düzgün ekleyip ekleyip eklemediğinizi kontrol etmek için mükemmeldir.

kodu, burada yanı sıra GitHub Yukarıdaki bağlantı çok basit dahildir:

@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 
+1

+1,5 Eh, efendim oynadı. – Caleb

23

kısaca cevabı koymak için, ben görünümü denetleyicisi hiyerarşi yazdırmak için XCode en ayıklayıcı konsolunda aşağıdaki komutu kullanın:

po [[[UIWindow keyWindow] rootViewController] _printHierarchy] 

PS Bu yalnızca ios8 ve üstü için çalışır ve yalnızca hata ayıklama amaçlıdır. Bana bu ve diğer pek çok parlak ayıklama teknikleri keşfetmeye yardımcı yazıya

Bağlantısı'dır this

Düzenleme 1: sen tarafından hiyerarşiyi yazdırabilirsiniz Swift 2'de :

UIApplication.sharedApplication().keyWindow?.rootViewController?.valueForKey("_‌​printHierarchy") 

Düzenleme 2: Swift 3'te hiyerarşiyi şu şekilde yazdırabilirsiniz:

UIApplication.shared.keyWindow?.rootViewController?.value(forKey: "_printHierarchy") 
+0

Swift: 'UIApplication.sharedApplication(). KeyWindow? .rootViewController? .valueForKey (" _ printHierarchy ")' –

+0

Teşekkürler. Onu cevaba ekleyeceğim. – jarora

5

hızlı yöntemi (lldb/Xcode ayıklayıcısında):

po [UIViewController _printHierarchy] 
0

_printHierarchy VC görüşüne alt görünüşüdür bileşeni için yinelemeli hakkında bilgi sağlamamaktadır.

Yaklaşım 1: Tam görünüm hiyerarşisini almak için lldb komutunu kullanın.

po [[[UIApplication sharedApplication] keyWindow] recursiveDescription] 

Yaklaşım 2: iyi yolu XCode ayıklananları “ayıklama Görüntüle Hiyerarşi” düğmesini kullanarak tüm bilgileri almak için.

enter image description here

+0

Erm, bu güzel, ama soru özellikle recursiveDescription ve görüntü denetleyici hiyerarşisi için bir eşdeğer arıyorum bahseder. – jrturton

İlgili konular