UICollectionView
内部を実装しようとしてUIView
いますが、その方法がわかりません。UICollectionView
での使用方法に関するチュートリアルはたくさんありますがUICollectionViewController
、通常のビューで実装する方法はありません。どうやってそれをしますか?
4 に答える
1)をドラッグしUICollectionView
てUIView
適切なサイズにします。
2)コレクション ビューのファイルにもあるプロパティを作成しますIBOutlet
。.h
@property (nonatomic, retain) IBOutlet UICollectionView *myCollectionView;
3)再び.h
ファイルでデリゲートを宣言します。これで、次のようになります.h
。
@interface UtaQuickView : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate> {
}
@property (nonatomic, retain) IBOutlet UICollectionView *myCollectionView;
4)をストーリーボードに接続myCollectionView
IBOutlet
します。
5) (オプション) iOS6 よりも古いものをターゲットにしている場合は、myCollectionView
プロパティを合成します。iOS6 をターゲットにしている場合は、自動合成されます。これは だけでなく、すべてのプロパティに当てはまりUICollectionViews
ます。したがって、iOS6 では、その必要はまったくありません@synthesize myCollectionView = _myCollectionView
。_mycollectionview
プロパティにアクセスする必要がある場所ならどこでも使用できます。
6)あなたの.m
ファイルで、あなたとviewDidLoad
を設定しますdelegate
dataSource.
_myCollectionView.delegate = self;
_myCollectionView.dataSource = self;
7)必要な dataSource メソッドを実装します。
#pragma mark - UICollectionView DataSource
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
そこから、必要な数のUICollectionViewDelegate
メソッドを実装できます。ただし、ドキュメントによると、2 つが必要です。
#pragma mark - UICollectionViewDelegate
- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath
- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSupplementaryView:(UICollectionReusableView *)view forElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath
は のサブクラスであるため、 のすべてのメソッドを置き換えること<UICollectionViewDelegateFlowLayout>
ができ<UICollectionViewDelegate>
、引き続きアクセスできることに注意することが重要です。<UICollectionViewDelegate>
<UICollectionViewDelegateFlowLayout>
<UICollectionViewDelegate>
そしてSwift版
UICollectionView を UIView にドラッグし、適切なサイズにします。
UIViewController を変更して UICollectionViewDataSource と UICollectionViewDelegate を拡張します
必要な機能を実装する
ストーリーボードからクラスに Control キーを押しながらドラッグして、アウトレット「collectionView」を作成します。
viewDidLoad() で、デリゲートとデータソースを自分自身に接続し
collectionView.delegate = self
、collectionView.dataSource = self
最終的には次のようになります。
class CustomerViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate
{
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
collectionView.delegate = self
collectionView.dataSource = self
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
}
func collectionView(collectionView: UICollectionView, didEndDisplayingCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
}
func collectionView(collectionView: UICollectionView, didEndDisplayingSupplementaryView view: UICollectionReusableView, forElementOfKind elementKind: String, atIndexPath indexPath: NSIndexPath) {
}
}
UICollectionView を UIView にドラッグし、適切なサイズにします。コレクション ビューの .h ファイルに IBOutlet でもあるプロパティを作成します。
@property (nonatomic, retain) IBOutlet UICollectionView *myCollectionView;
UIView では、最初に UICollectionView セルを宣言する必要があります-(void)awakeFromNib
[myCollectionView registerNib:[UINib nibWithNibName:@"nib file of collectionView cell" bundle:nil] forCellWithReuseIdentifier:@"identifier"];
それから
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
custom class *cell1=[collectionView dequeueReusableCellWithReuseIdentifier:@"identifier" forIndexPath:indexPath];
return cell1;
}