[英]Storyboard add a custom view which has xib file has no subviews
我用xib文件创建了一个自定义UIView
A,可以通过以下方式正确加载它:
NSArray *starsNib = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:nil options:nil];
A *starsView = starsNib[0];
[self.view addSubview:starsView];
然后在我的情节提要文件中,将此自定义视图A添加到UITableViewCell
的contentView
。 加载tableview时,我发现定制视图A没有xib文件中添加的子视图。 我还发现当A的initWithCoder:
返回时,它没有子视图。
顺便说一句,在xib文件中,我已将parent view
和file's owner
都设置为自定义视图A类。
我想知道为什么会这样,为什么initWithCoder:
返回时未加载子视图?
因为视图是从情节提要而不是XIB加载的。 在情节提要中,视图为空。
您应该从情节提要中删除视图并将其加载到代码中,这可能是在实例化单元格时进行的,因为每个单元格只需执行一次即可。
您可以使用Xib创建自定义tableViewCell,Xib具有您的自定义UITableViewCell类的文件所有者,然后您可以使用cellForRowAtIndexPath:
方法,例如
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
// Load the top-level objects from the custom cell XIB.
NSArray * starsNib = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:self options:nil];
cell = starsNib[0];
}
return cell;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.