我有一个TagDisplayCell.xib与关联TagDisplayCell.m。在.m
文件中,我加载了这样的视图。
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder: aDecoder];
if(self){
//load the interface file from .xib
[[NSBundle mainBundle] loadNibNamed:@"TagDisplayCell" owner:self options:nil];
//add as subview
[self addSubview:self.view];
self.view.translatesAutoresizingMaskIntoConstraints = NO;
[self addConstraint:[self pin:self.view attribute:NSLayoutAttributeTop]];
[self addConstraint:[self pin:self.view attribute:NSLayoutAttributeLeft]];
[self addConstraint:[self pin:self.view attribute:NSLayoutAttributeBottom]];
[self addConstraint:[self pin:self.view attribute:NSLayoutAttributeRight]];
}
return self;
}
在我的视图控制器中有一个垂直UiStackView
(以便内容按行堆叠)。我想在此UiStackView中添加TagDisplayCell
的几个实例。这就是我在做的事。
//create all the views
for(int i=0; i<[commentsAndTagsArray count]; i++)
{
NSObject *obj =commentsAndTagsArray[i];
if ([obj isKindOfClass:[Tag class]])
{
Tag *tempTag = ((Tag*) obj);
TagDisplayCell *tempTagCell = [[TagDisplayCell alloc] initWithFrame:frame];
[uiStackView addSubview:tempTagCell];
}
}
当我运行时,屏幕上不显示任何内容。我在这里缺少什么?
答案 0 :(得分:0)
当您在View子类上调用initWithFrame:
时,它不会从XIB加载。
以与您在第一个代码段中相同的方式执行视图加载:
TagDisplayCell *tempTagCell = (TagDisplayCell *)[[[NSBundle mainBundle] loadNibNamed:@"TagDisplay" owner:nil options:nil] firstObject];