获取根 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都在UIWindow
,the 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 添加到导航控制器? [关闭]