15

私が正しく理解していれば、aのコンテンツはUICollectionViewCellそのcontentViewプロパティ内にあり、背景はに入るはずbackgroundViewです。

それでも、UICollectionViewCellをInterface Builderにドラッグすると、contentViewまたはについての言及はありませんbackgroundViewcontentViewサブビューを追加すると、またはではなく、セル全体が親になりbackgroundViewます。

UICollectionViewCellでは、IBでを定義する正しい方法は何ですか?

4

3 に答える 3

15

「サブビューを追加すると、contentViewではなく、セル全体が親になります」

本当じゃない。UICollectionViewCellをドラッグしてUI要素を追加すると、コンテンツビューに追加されます。オブジェクトリストに表示されないという事実は、そこにないことを意味するわけではありません(NSBoxにも同じことが言えます。IBにも表示されないコンテンツビューがあります)。collectionView:didSelectItemAtIndexPath:で、cellForItemAtIndexPathをログに記録し、そのサブビューを確認すると、1つだけが見つかり、cell.contentViewをログに記録した場合と同じです。サブビューをログに記録すると、UI要素が表示されます。

さて、背景ビューに関しては、IBからアクセスできるものではないと思います。UIViewを使用してxibファイルを作成し、それをセルのbackgroundViewプロパティに割り当てることができます。

于 2012-11-17T05:11:33.617 に答える
7

contentViewより良いオプションがないため、とに別々のnibファイルを使用していますbackgroundView。次に、私の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;
}
于 2012-11-16T15:51:57.000 に答える
1

これがXcode8の新機能かどうかはわかりませんが、とUICollectionViewCellを接続するためのコンセントが含まれています。backgroundViewselectedBackgroundView

ここに画像の説明を入力してください

このおかげでUIView、コレクションビューセルに(またはサブクラス)を追加して、いずれかのアウトレットに接続できます。このようにして、IBを使用してそれらを定義できるようになります。

ここに画像の説明を入力してください

お役に立てれば!

于 2017-02-13T01:06:49.160 に答える