【问题标题】:Adding subviews, yet I see nothing - iOS添加子视图,但我什么也没看到 - iOS
【发布时间】:2011-01-16 01:04:45
【问题描述】:

我有一个控制器,其中有几个子视图。在代码中的某个位置,我将它们删除,然后再添加它们。这是我用来添加它们的代码:

[self.view addSubview:dateLabel];
[self.view addSubview:tableView];

在这些行之后,我打印出来:

NSLog(@"%@",[self.view subviews]);

我得到的输出是:

"<UINavigationBar: 0x614a8f0; frame = (0 0; 320 48); layer = <CALayer: 0x6129ee0>>",
    "<UILabel: 0x614d500; frame = (0 48; 320 25); text = 'Dec. 15, 2010 - Jan. 15, ...'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x614d570>>",
    "<UITableView: 0x507ee00; frame = (0 73; 320 390); clipsToBounds = YES; layer = <CALayer: 0x9f57930>; contentOffset: {0, 0}>"

但是,我在屏幕上看到的唯一内容是导航栏。为什么 label 和 tableView 没有显示,即使它在这里说它是一个 subView?

我也试过在添加子视图后添加以下代码:

[self.view bringSubviewToFront:tableView];
[self.view bringSubviewToFront:dateLabel];

但还是不行。

【问题讨论】:

  • 我认为它们超出了包含视图的范围。如果更改子视图的框架怎么办?
  • ....您能否编辑您的问题,或者提供您实际使用的代码来尝试显示子视图,因为我们可以排除故障并从那里开始指导您。您的视图未显示的原因可能有 100 多种。说明您的视图存在的 NSLog 无助于解释为什么它没有显示在屏幕本身上。谢谢
  • 改变框架也不起作用:(
  • 我更新并发布了用于显示子视图的代码。
  • 您是否尝试过更改子视图的 z 顺序? UIView 中有一个 BringToFront 方法可以做到这一点。

标签: iphone uitableview ios uinavigationbar uilabel


【解决方案1】:

你的控制器是 UIViewController 吗?您是否检查过它是否已正确呈现?例如与 presentModalViewController:self ?

【讨论】:

    猜你喜欢
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多