无法从 UIViewController 添加 UIView

Posted

技术标签:

【中文标题】无法从 UIViewController 添加 UIView【英文标题】:can't add UIView from a UIViewController 【发布时间】:2011-01-12 21:30:15 【问题描述】:

我在从视图控制器显示视图时遇到了一些问题。基本上,我有一个 UIViewController 类,我通过重载 loadView 方法以编程方式创建了视图。这是我的代码:

UIView* view = controller.view;  
UIWindow* window = [UIApplication sharedApplication].keyWindow;  
if(!window)  
  
    window = [[UIApplication sharedApplication].windows objectAtIndex:0];  
  
[window addSubview:view];

视图不可见。

但是,如果我通过调用创建了一个简单的基于视图的应用程序

[self presentModalViewController: controller animated: YES];

一切正常。

我是 ios 视图编程的新手。我做错了什么?

【问题讨论】:

欢迎来到 Stack Overflow,史蒂夫。顺便说一句,如果您在代码上使用代码格式化程序(编辑器中的 图标),它将自动被正确格式化。我还用“ios”和“iphone”标签更新了你的问题。 【参考方案1】:

史蒂夫,

我不确定您要在这里实现什么,但典型的 iphone 应用程序将具有一个基本 UIViewController 子类,例如导航控制器或选项卡控制器,并且该控制器的视图将作为 UIWindow 视图的子视图添加到appDelegate 类。

然后您实例化更多的 UIViewControllers 或其子类,这些视图被添加为当前视图的子视图,依此类推。

您检查过 XCode 中的基本模板吗?这些应该向您展示 appDelegate 等如何工作。根据我的经验,您通常不需要在其他类中弄乱 UIWindow。

【讨论】:

谢谢。你的意思是我不能将 UIView 添加到 UIWindow?我查看了 FB Connect,它向 UIWindow 添加了一个 UIView 并且它起作用了。但是当我尝试将 UIViewController 中的视图添加到视图中时,它不起作用。 @Steve 不,我并不是说您不能将 UIView 添加到 UIWindow,只是我不知道您为什么要尝试以这种方式做某事,基于 sn-p您提供的代码。如果你是 iOS 开发新手,也许你想学习比 FB Connect 更简单的东西。

以上是关于无法从 UIViewController 添加 UIView的主要内容,如果未能解决你的问题,请参考以下文章

无法同时满足约束 - 在添加子视图时

无法将 rightBarButtonItem 添加到 UIViewController

UIViewController 添加子视图给我错误:无法识别的选择器

XCode:无法在界面构建器中将 UIView 拖放到 UIViewController 上

无法从 UIViewController 导航到 UICollectionViewController

我应该在哪里从 UIViewController 中的 firebase 加载数据