addSubview不起作用

7
// Create and add a sub view
CGRect viewRect = CGRectMake(0, 0, 200, 200);
UIView *a_sub_view = [[UIView alloc] initWithFrame : viewRect];

[window addSubview : a_sub_view];

在添加了上述3行代码之后,xcode没有产生任何错误或警告。但是子视图根本没有显示出来。示例程序似乎与之前完全相同。希望有知识的人能够帮忙。

2
这实际上是你的代码吗?如果是,a_sub_view 是一个普通的 UIView,它实际上并没有绘制任何东西。你需要实例化一个自定义子类或其他内置子类,如 UIButton - Daniel Dickison
window 是什么类型的对象? - 0x90
窗口是UIWindow,在此之前我尝试了将“addSubview”添加到窗口的基本UIView上,但依然无法显示。 - Stanley
@Daniel,你说得对。UIView 对象本身并不会有任何作用。添加语句 a_sub_view.backgroundColor = UIColor.blackColor; 后,子视图就会显示出来了。//谢谢... - Stanley
5个回答

15

我发现设置背景色很有用,这样我就知道视图和边界在哪里了。

a_sub_view.backgroundColor = [UIColor redColor];
在你的例子中,你创建了一个空视图,所以你不会‘看’到任何东西。

3

窗口期望添加视图控制器的视图。

您可以在当前视图中添加子视图。

因此,在您的示例中使用:

[self.view addSubview:a_sub_view];

3

我正在使用这个方法来“查找”窗口:

UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
[window addSubview:myView];

这个方法对我也起作用了,但是它有点丑陋:
[self.navigationController.tabBarController.view addSubview:myView];

为了解释第二个问题,我需要“跟随”控制器返回到“顶部”视图。(我的应用程序在当前选项卡中有一个带有导航控制器的标签栏。)

1
如果您正在使用iOS 5及以上版本,则需要按照以下步骤进行操作:
[self.window.rootViewController.view addSubView:viewObject];

-1
[self.view addSubView: a_sub_view];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接