我定义了一个 UIView“RowOfThree”,其中有 3 个标签。我还定义了一个 UIView“Table”,其中有许多“Row”类型的对象。
以下代码位于对象“Table”内的方法中:
RowOfThree *rowOfThree = [[RowOfThree alloc] init];
[self addSubview:rowOfThree];
由于某种原因它没有添加视图。 我尝试在 IB 中和以编程方式定义“RowOfThree”中的标签,但它仍然不起作用。
通常,UIView(及其子类)使用
initWithFrame:
进行初始化。也许您在自己的 init
实现中做到了这一点,我不知道,但很可能您的视图具有 {0,0,0,0} 的框架,因此高度为 0,宽度为 0。手动设置框架并告诉我们这是否有效。
CGRect newFrame = CGRectMake(0.f, 0.f, 200.f, 40.f);
RowOfThree *rowOfThree = [[RowOfThree alloc] initWithFrame:newFrame];
[self addSubview:rowOfThree];
[rowOfThree release];
SanHalo 的答案很可能是正确的,但此外,如果您使用 Interface Builder,则不应直接初始化 nib 中定义的视图。如果这样做,则必须使用
initFromNib
而不是仅 init
。