Table ViewとCollectionViewの違い
4890 ワード
原博さんも、私のブログです。
1、協議に従う:
UITableView:
UITableViewDataSource,UITableViewDelegate
UIcollectionView: UICollectionViewDelegate, UICollectionViewDataSource,UICollectionViewDelegateFlowLayout
2、登録cell:
tableviewはcellcollectionViewを登録せずにcellを登録する必要があります.そうしないとクラッシュします.
① UITableView:
[tableView dequeueReusableCellWithIdentifier:]
メソッドでcellを作成するには、cellを登録する必要はありませんが、cellが空であることを考慮し、対応する処理を行う必要があります.- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellID"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellID"];
}
cell.textLabel.text = @"system cell";
return cell;
}
次のコードを使用してcellを作成する場合は、cellを登録する必要があります.そうしないとcrashになります.
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellID" forIndexPath:indexPath];
注意:cellが登録されている場合-(UItableView*)tableView:(UItableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPathメソッドでcellが空の場合を処理する必要はありません.
② UICollectionView:
cellを登録する必要があり、cellが空の場合を処理する必要はありません.
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
CustomCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CustomCollectionViewCell" forIndexPath:indexPath];
return cell;
}
3、CollectionView固有の属性:
UIcollectionViewFlowLayoutオブジェクト
現在のCollectionViewからのsectionの上下4方向のオフセット量を制御するsectionInsetプロパティがあります.
行間隔(minimumLineSpacing)と列間隔(minimumInteritemSpacing)のプロパティがあります.(itemSize TableViewに似たrowHeightは後述しない)開発ではsectionInset:幅375の画面を十分に利用でき、1行に3つのwidth=100のitemを表示し、列間隔を0にする必要がありますが、どのように設定しますか?a>collectionViewを初期化できる場合は幅を300に設定します.b>設定
sectionInset = UIEdgeInsetsMake(0, 37.5, 0, 37.5);
4、まとめ:
cellを作成するには
forIndexPath:
付きの方法でcellを登録する必要があります.cellは既に登録されており、cellが空であると判断する必要はありません.