定义UICollectionViewCell用笔尖(Defining UICollectionVie

2019-07-03 21:16发布

如果我理解正确的话,A的含量UICollectionViewCell应该去其内部contentView属性和背景为backgroundView

然而,当我拖动UICollectionViewCell到Interface Builder中没有提及contentViewbackgroundView 。 如果我添加子视图,那些将整个小区作为其母公司,而不是contentViewbackgroundView

什么是定义的正确方法UICollectionViewCell与IB,然后呢?

Answer 1:

“如果我添加子视图,那些将整个小区作为其母公司,而不是内容查看”

这不是真的。 如果您在UICollectionViewCell拖动,并添加UI元素到它,你将它们添加到内容视图。 它不会在对象列表中显示出来,但这并不意味着它不存在(同样是真正的NSBox - 它有没有在IB显示任何内容视图)。 如果在的CollectionView:didSelectItemAtIndexPath :,您登录cellForItemAtIndexPath,并查看其子视图,你会发现只有一个,它是同一个你登录cell.contentView得到。 如果你登录其子视图,然后你会看到你的UI元素。

现在,就为背景来看,我不认为这东西你可以从IB访问。 你可以有一个UIView一个XIB文件,然后分配给该小区的物业backgroundView。



Answer 2:

由于缺乏一个更好的选择的,我使用了单独的榫文件contentViewbackgroundView 。 然后在我的UICollectionViewCell子类:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        NSArray *contentViewNib = [[NSBundle mainBundle] loadNibNamed:@"CollectionViewCellContentView" owner:self options:nil];
        [self.contentView addSubview:contentViewNib[0]];
        NSArray *backgroundViewNib = [[NSBundle mainBundle] loadNibNamed:@"CollectionViewCellBackgroundView" owner:self options:nil];
        self.backgroundView = backgroundViewNib[0];
    }
    return self;
}


Answer 3:

我不知道这是否是新的Xcode 8,但UICollectionViewCell包括用于连接插座backgroundViewselectedBackgroundView

多亏了这一点,你可以添加UIView (或子类)到您的收藏观察室,并将其连接到插座中的任何一个。 这样,您就可以使用IB来定义它们。

希望这可以帮助!



文章来源: Defining UICollectionViewCell with nib