recursiveDescription
在调试视图层次结构时非常有用。查看控制器的层次结构也很重要,有没有相当于此?视图控制器层次结构是否存在recursiveDescription方法?
回答
更新 - 类似的功能现在可在Apple提供的表格中作为_printHierarchy
方法使用,因此您不再需要此类别。
现在有:
Github: Recursive description category for view controllers。
这增加了一个recursiveDescription
方法UIViewController
打印出视图控制器层次结构。非常适合检查您是否正确添加和移除您的子视图控制器。
代码很简单,这里包括以及GitHub的链接上面:
@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
简明把答案,我用命令低于Xcode的调试器控制台打印视图控制器层次:
po [[[UIWindow keyWindow] rootViewController] _printHierarchy]
PS这仅适用于ios8及更高版本,仅用于调试目的。
的文章链接,帮助我发现这和其他许多辉煌的调试技术是this
编辑1: 在斯威夫特2,你可以通过打印层次:
UIApplication.sharedApplication().keyWindow?.rootViewController?.valueForKey("_printHierarchy")
编辑2: 在Swift 3中,您可以通过以下方式打印层次结构:
UIApplication.shared.keyWindow?.rootViewController?.value(forKey: "_printHierarchy")
在Swift中:'UIApplication.sharedApplication().keyWindow?.rootViewController?.valueForKey(“_ printHierarchy”)' –
谢谢。我会将其添加到答案中。 – jarora
最快方法(在LLDB/Xcode调试):
po [UIViewController _printHierarchy]
_printHierarchy不提供用于VC的视图的子视图分量递归信息。
方法1:使用lldb命令获取完整的视图层次结构。
po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
方法二:利用Xcode调试“调试视图层次”按钮最好的办法让所有的信息。
嗯,这很好,但问题明确提到recursiveDescription,我正在寻找一个等效的视图控制器层次结构。 – jrturton
- 1. 视图控制器不在视图层次结构中?
- 2. iPhone视图控制器层次结构的开销是多少?
- 3. 从层次结构中删除先前的视图控制器
- 4. ZBarReaderViewController,视图控制器层次结构和其他
- 5. 导航模式视图控制器和导航控制器的层次结构
- 6. 将视图控制器添加到视图层次结构的正确方法是什么?
- 7. 如何从任何其他视图控制器获取视图控制器的详细视图层次结构?
- 8. 如何打印特定视图控制器的视图层次结构?
- 9. 如何从视图层次结构中删除视图控制器?
- 10. android - 什么是视图层次结构?
- 11. 我如何限制导航控制器层次结构中iOS7中的每个视图控制器的方向
- 12. 控制不能在层次结构
- 13. NSToolbar和视图控制器层次
- 14. 添加模式视图控制器到父子视图控制器层次结构
- 15. viewDidLoad在视图控制器层次结构中弹出时调用吗?
- 16. 如何在视图控制器层次结构中正确设置interfaceOrientation属性?
- 17. 稍后在导航控制器的层次结构中抓取视图
- 18. ImagePicker在视图层次结构问题
- 19. 根视图控制器在窗口层次视图不
- 20. 有什么办法来知道UITextField是否在视图的层次结构中?
- 21. 试图了解视图层次结构
- 22. iPhone照片应用程序的视图控制器结构/层次结构是什么?
- 23. 在xcode5的视图控制器层次结构之外的界面生成器中显示视图
- 24. 使用相同的控制器方法处理命令对象层次结构
- 25. 如何从最后一个视图移动到视图控制器层次结构中的任何视图
- 26. 渲染不在视图层次结构中的UIView图层
- 27. NSView - 获取超视图层次结构
- 28. 重置视图层次结构iOS
- 29. 设置内容视图层次结构
- 30. 旋转视图层次结构90度
+1.5发挥得好,先生。 – Caleb