获取根 ViewController - Objective-C

Posted

技术标签:

【中文标题】获取根 ViewController - Objective-C【英文标题】:Get the root ViewController - Objective-C 【发布时间】:2014-07-03 11:38:29 【问题描述】:

这是我的问题:我实际上创建了一个custom segue 来以不同的方式管理我的UIViewControllers 之间的转换(我正在处理一个基于Storyboard 的项目)。我使用CATransform3D 添加了一些动画来移动视图...所以...当我这样做时,我在背景中唯一能看到的是黑色视图。

我很想知道如何更改该颜色以及是否可以将其替换为UIImageView。你有什么诀窍/想法吗?

谢谢! :)

【问题讨论】:

您可以发布您的视图设置吗? (故事板的屏幕截图左右)。无论如何,您可以尝试访问self.window.rootViewController 并在那里添加一个子视图。 ***.com/a/6131321/581994 @SebastianWramba 我试过了,即使它不起作用:( --> SecondViewController *secV = [[SecondViewController alloc] init]; secV.view.backgroundColor = [UIColor greenColor]; [[UIApplication sharedApplication ].keyWindow.rootViewController addChildViewController:secV]; @SebastianWramba 刚刚添加了截图 【参考方案1】:

如果您确定黑色视图是根控制器的视图,您可以尝试以下操作:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"my_image"]];
UIView *rootView = [[UIApplication sharedApplication].keyWindow.rootViewController.view];
[rootView insertSubview:imageView atIndex:0];

【讨论】:

刚试过你的代码...但它仍然在后台显示黑屏...是否意味着我看到的不是rootView?如果是这样...我怎样才能访问它? 你试过改变rootView bg颜色吗?窗户bg颜色?澄清您的视图堆栈会很棒。请尝试更改导航控制器的背景颜色【参考方案2】:

其实这里是个坟墓,不过我把答案留给后人吧。

我们知道ios是从OS X迁移过来的,所以所有的viewControllers都在UIWindowthe black color就是backgroundColor of the window。这样你should not找到任何root viewController,你找到的是the top window

如果你想change the black backgroundColor to other color,喜欢白色,请:

  UIWindow *window = [[UIApplication sharedApplication].windows lastObject];
  window.backgroundColor = [UIColor whiteColor];

【讨论】:

以上是关于获取根 ViewController - Objective-C的主要内容,如果未能解决你的问题,请参考以下文章

如何从使用的 viewController 弹回根 ViewController?

pushViewController 不是根 viewController

根 ViewController 内的 UIViewController 不旋转

如果 ViewController 包含作为根的 TableView,如何将 ViewController 添加到导航控制器? [关闭]

如何从 viewcontroller viewdidload 方法触发视图中的功能 - 目标 c - iphone

根视图控制器 Swift