Can I see the view hierarchy I have in my app whil

2019-01-27 04:45发布

问题:

I am debugging my iOS app and since I have a view push/dismiss calls, I want to make sure I don't have any views in my stack that I wouldn't expect. Is it possible to see this in the Xcode debugger?

回答1:

You might find lldb comes to the rescue with 'recursiveDescription'. Simply set a breakpoint at the point where you are interested in the view hierarchy. If for example you want everything in the window you can type

(lldb) po [[[[UIApplication sharedApplication] windows] firstObject] recursiveDescription]

Alternatively, I often find that when debugging views I am mostly interested in the hierarchy for a particular view. In that instance you can hook straight in to the point in code you are curious about (for example the viewDidAppear: method) and type:

(lldb) po [self.view recursiveDescription]

Note: With Xcode 6 Apple have added realtime view debugging which you can access from the debug bar.



回答2:

As all of your view controllers should be managed by the navigation controller, you should be able to do something like this:

NSArray * controllerArray = [[self navigationController] viewControllers];

for (UIViewController *controller in controllerArray){
   //Code here.. e.g. print their titles to see the array setup;
   NSLog(@"%@",controller.title);
}

Taken from here: How to iterate all the UIViewControllers on the app



回答3:

There is also Reveal.app which provide much more features than Xcode realtime view debugging, has a nicer UI and integrates with AppCode.