Ios 显示俯视控制器
我正在阅读包含40多个ViewController的应用程序的代码。您如何知道哪个ViewController是当前的 我尝试过的:Ios 显示俯视控制器,ios,objective-c,xcode5,Ios,Objective C,Xcode5,我正在阅读包含40多个ViewController的应用程序的代码。您如何知道哪个ViewController是当前的 我尝试过的: CBINTERSPECT:使用 消息:NSStringFromClass([self class]) 看着添加 当一个视图 控制器是否通过管道连接 使用runtime.h动态添加 方法 任何想法都值得赞赏试试以下方法: - (UIViewController *)topViewController { return [self topViewControl
NSStringFromClass([self class])
runtime.h
动态添加
方法- (UIViewController *)topViewController
{
return [self topViewController:self.window.rootViewController];
}
- (UIViewController *)topViewController:(UIViewController *)viewController
{
if (viewController.presentedViewController == nil) {
return viewController;
}
if ([viewController.presentedViewController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *) viewController.presentedViewController;
UIViewController *topViewController = [navigationController.viewControllers lastObject];
return [self topViewController:topViewController];
}
UIViewController *presentedViewController = viewController.presentedViewController;
return [self topViewController:presentedViewController];
}
我经常使用[self.window recursiveDescription]通过我的应用程序打印所有UIView。这不是VC,但也可以对你有用 只需在需要的任何地方设置断点并键入(用键“UIWindow”替换窗口): 您将看到常见的结果:
<UIWindow: 0xc0275c0; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0xc027b20>; layer = <UIWindowLayer: 0xc0276e0>>
| <UILayoutContainerView: 0xc0196b0; frame = (0 0; 320 568); autoresize = W+H; gestureRecognizers = <NSArray: 0xc022fa0>; layer = <CALayer: 0xc019790>>
| | <UINavigationTransitionView: 0xc011a60; frame = (0 0; 320 568); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xc00ebd0>>
| | | <UIViewControllerWrapperView: 0xb34ab10; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0xb34abe0>>
| | | | <UIView: 0xc44a7c0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0xc44a820>>
| | | | | <UITableView: 0xdb4a000; frame = (0 0; 320 468); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0xc449ac0>; layer = <CALayer: 0xc448550>; contentOffset: {-0, -63}>
| | | | | | <UITableViewWrapperView: 0xc44a440; frame = (0 0; 320 468); autoresize = W+H; layer = <CALayer: 0xc44a510>>
| | | | | | | <WorkspaceCell: 0xc023a50; baseClass = UITableViewCell; frame = (0 1; 320 44); autoresize = W; layer = <CALayer: 0xc00cad0>>
| | | | | | | | <UITableViewCellScrollView: 0xc02c400; frame = (0 0; 320 44); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0xc02c980>; layer = <CALayer: 0xc02c610>; contentOffset: {0, 0}>
| | | | | | | | | <UITableViewCellContentView: 0xc022980; frame = (0 0; 320 43.5); opaque = NO; gestureRecognizers = <NSArray: 0xc02d2f0>; layer = <CALayer: 0xc02b0c0>>
| | | | | | | | | | <UIImageView: 0xc0233f0; frame = (15 7; 29 29); clipsToBounds = YES; autoresize = RM+TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xc0291e0>>
| | | | | | | | | | <UILabel: 0xc0262e0; frame = (60 11; 240 21); text = 'Alterplay'; clipsToBounds = YES; opaque = NO; autoresize = W+RM+TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xc0276a0>>
| | | | | | | | | | <UILabel: 0xc023130; frame = (15 7; 29 29); text = 'A'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xc0231d0>>
| | | | | | | | | <_UITableViewCellSeparatorView: 0xc02e4e0; frame = (0 43.5; 320 0.5); layer = <CALayer: 0xc02e5b0>>
| | | | | | | | | <_UITableViewCellSeparatorView: 0xc02e850; frame = (0 0; 320 0.5); layer = <CALayer: 0xc02e8c0>>
| | | | | | <UIImageView: 0xc449210; frame = (0 465.5; 320 3.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0xc4494a0>>
| | | | | | <UIImageView: 0xc449680; frame = (316.5 414; 3.5 55); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0xc449760>>
| | | | | <UIView: 0xc44a850; frame = (0 518; 320 50); autoresize = W+TM; layer = <CALayer: 0xc44a8b0>>
| | | | | | <UIButton: 0xc4458a0; frame = (75 14; 172 22); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xc4459d0>>
| | | | | | | <UIImageView: 0xb359ce0; frame = (27.5 4; 117 14); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xb359560>>
| | | | | <UIView: 0xc44a9f0; frame = (0 468; 320 50); autoresize = LM+RM+TM; layer = <CALayer: 0xc44aa50>>
| | | | | | <UIButton: 0xc447b10; frame = (101 10; 119 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xc447c00>>
| | | | | | | <UIButtonLabel: 0xb34c1a0; frame = (32 3; 55 24); text = 'Logout'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xb34c2b0>>
| | | | | <UIImageView: 0xc44ab00; frame = (0 424; 320 44); clipsToBounds = YES; opaque = NO; autoresize = LM+RM+TM; layer = <CALayer: 0xc44ab90>>
| | <UINavigationBar: 0xc019980; frame = (0 20; 320 44); opaque = NO; autoresize = W; gestureRecognizers = <NSArray: 0xc01b9f0>; layer = <CALayer: 0xc019ae0>>
| | | <_UINavigationBarBackground: 0xc01a180; frame = (0 -20; 320 64); opaque = NO; autoresize = W; userInteractionEnabled = NO; layer = <CALayer: 0xc01a2b0>>
| | | | <_UIBackdropView: 0xc01c0d0; frame = (0 0; 320 64); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <_UIBackdropViewLayer: 0xc01dca0>>
| | | | | <_UIBackdropEffectView: 0xc01e6b0; frame = (0 0; 320 64); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CABackdropLayer: 0xc01e970>>
| | | | | <UIView: 0xc01f2a0; frame = (0 0; 320 64); hidden = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xc01f400>>
| | | | <UIImageView: 0xc01a540; frame = (0 64; 320 0.5); userInteractionEnabled = NO; layer = <CALayer: 0xc01a610>>
| | | <UINavigationItemView: 0xc023490; frame = (111.5 8; 97.5 27); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc023570>>
| | | | <UILabel: 0xc023920; frame = (0 3; 97.5 22); text = 'Workspaces'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc023a20>>
| | | <_UINavigationBarBackIndicatorView: 0xc029150; frame = (8 12; 12.5 20.5); alpha = 0; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc029240>>
|
| |
| | |
| | | |
| | | | |
| | | | | |
| | | | | | |
| | | | | | | |
| | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | |
| | | | | |
| | | | |
| | | | | |
| | | | | | |
| | | | |
| | | | | |
| | | | | | |
| | | | |
| |
| | |
| | | |
| | | | |
| | | | |
| | | |
| | |
| | | |
| | |
您是否正在使用UINavigationController
?在哪里调用topViewController?
<UIWindow: 0xc0275c0; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0xc027b20>; layer = <UIWindowLayer: 0xc0276e0>>
| <UILayoutContainerView: 0xc0196b0; frame = (0 0; 320 568); autoresize = W+H; gestureRecognizers = <NSArray: 0xc022fa0>; layer = <CALayer: 0xc019790>>
| | <UINavigationTransitionView: 0xc011a60; frame = (0 0; 320 568); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xc00ebd0>>
| | | <UIViewControllerWrapperView: 0xb34ab10; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0xb34abe0>>
| | | | <UIView: 0xc44a7c0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0xc44a820>>
| | | | | <UITableView: 0xdb4a000; frame = (0 0; 320 468); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0xc449ac0>; layer = <CALayer: 0xc448550>; contentOffset: {-0, -63}>
| | | | | | <UITableViewWrapperView: 0xc44a440; frame = (0 0; 320 468); autoresize = W+H; layer = <CALayer: 0xc44a510>>
| | | | | | | <WorkspaceCell: 0xc023a50; baseClass = UITableViewCell; frame = (0 1; 320 44); autoresize = W; layer = <CALayer: 0xc00cad0>>
| | | | | | | | <UITableViewCellScrollView: 0xc02c400; frame = (0 0; 320 44); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0xc02c980>; layer = <CALayer: 0xc02c610>; contentOffset: {0, 0}>
| | | | | | | | | <UITableViewCellContentView: 0xc022980; frame = (0 0; 320 43.5); opaque = NO; gestureRecognizers = <NSArray: 0xc02d2f0>; layer = <CALayer: 0xc02b0c0>>
| | | | | | | | | | <UIImageView: 0xc0233f0; frame = (15 7; 29 29); clipsToBounds = YES; autoresize = RM+TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xc0291e0>>
| | | | | | | | | | <UILabel: 0xc0262e0; frame = (60 11; 240 21); text = 'Alterplay'; clipsToBounds = YES; opaque = NO; autoresize = W+RM+TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xc0276a0>>
| | | | | | | | | | <UILabel: 0xc023130; frame = (15 7; 29 29); text = 'A'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xc0231d0>>
| | | | | | | | | <_UITableViewCellSeparatorView: 0xc02e4e0; frame = (0 43.5; 320 0.5); layer = <CALayer: 0xc02e5b0>>
| | | | | | | | | <_UITableViewCellSeparatorView: 0xc02e850; frame = (0 0; 320 0.5); layer = <CALayer: 0xc02e8c0>>
| | | | | | <UIImageView: 0xc449210; frame = (0 465.5; 320 3.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0xc4494a0>>
| | | | | | <UIImageView: 0xc449680; frame = (316.5 414; 3.5 55); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0xc449760>>
| | | | | <UIView: 0xc44a850; frame = (0 518; 320 50); autoresize = W+TM; layer = <CALayer: 0xc44a8b0>>
| | | | | | <UIButton: 0xc4458a0; frame = (75 14; 172 22); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xc4459d0>>
| | | | | | | <UIImageView: 0xb359ce0; frame = (27.5 4; 117 14); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xb359560>>
| | | | | <UIView: 0xc44a9f0; frame = (0 468; 320 50); autoresize = LM+RM+TM; layer = <CALayer: 0xc44aa50>>
| | | | | | <UIButton: 0xc447b10; frame = (101 10; 119 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xc447c00>>
| | | | | | | <UIButtonLabel: 0xb34c1a0; frame = (32 3; 55 24); text = 'Logout'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xb34c2b0>>
| | | | | <UIImageView: 0xc44ab00; frame = (0 424; 320 44); clipsToBounds = YES; opaque = NO; autoresize = LM+RM+TM; layer = <CALayer: 0xc44ab90>>
| | <UINavigationBar: 0xc019980; frame = (0 20; 320 44); opaque = NO; autoresize = W; gestureRecognizers = <NSArray: 0xc01b9f0>; layer = <CALayer: 0xc019ae0>>
| | | <_UINavigationBarBackground: 0xc01a180; frame = (0 -20; 320 64); opaque = NO; autoresize = W; userInteractionEnabled = NO; layer = <CALayer: 0xc01a2b0>>
| | | | <_UIBackdropView: 0xc01c0d0; frame = (0 0; 320 64); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <_UIBackdropViewLayer: 0xc01dca0>>
| | | | | <_UIBackdropEffectView: 0xc01e6b0; frame = (0 0; 320 64); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CABackdropLayer: 0xc01e970>>
| | | | | <UIView: 0xc01f2a0; frame = (0 0; 320 64); hidden = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xc01f400>>
| | | | <UIImageView: 0xc01a540; frame = (0 64; 320 0.5); userInteractionEnabled = NO; layer = <CALayer: 0xc01a610>>
| | | <UINavigationItemView: 0xc023490; frame = (111.5 8; 97.5 27); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc023570>>
| | | | <UILabel: 0xc023920; frame = (0 3; 97.5 22); text = 'Workspaces'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc023a20>>
| | | <_UINavigationBarBackIndicatorView: 0xc029150; frame = (8 12; 12.5 20.5); alpha = 0; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc029240>>