【发布时间】:2013-05-13 18:03:33
【问题描述】:
我想使用 UIView 的边界来创建 UILabel 并将其添加到 viewDidLoad 方法中的 UIView,但是,我发现 UIView 的边界在 viewDidLoad 中仍然为空。但是当我查看一个演示应用程序时,它的 UIView 的边界已经在 viewDidLoad 中初始化了。
在我有的界面
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIView *promotionView;
@end
我正在努力做
- (void)viewDidLoad
{
[super viewDidLoad];
UIView *container = [[UIView alloc] initWithFrame:self.promotionView.bounds];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, container.bounds.size.height-100, 320, 20)];
label.text = @"Promotion Title";
[container addSubview:label];
[self.promotionView addSubview: container];
}
但它不起作用,因为promotionView的边界为空。
【问题讨论】:
-
将此代码更改为
viewWillAppear并检查插座是否已连接 -
promotionView的边界不是nil。promotionView本身就是nil。确保您实际上将promotionView设置为正确的视图。 -
@MidhunMP 将此类代码放在
viewWillAppear中是不合适的。viewWillAppear如果其他视图控制器从导航堆栈中被推送/弹出,则可以多次调用。 -
@rmaddy 我已经在情节提要中创建了 UIView 并将其链接到视图控制器,我还需要做什么吗?
-
在
viewDidLoad中设置断点并使用调试器运行应用程序。到达断点时,检查promotionView是否为nil。
标签: ios null viewdidload bounds