web-dev-qa-db-ja.com

UIView内のUICollectionView

UICollectionView内にUIViewを実装しようとしていますが、その方法がわかりません。 UICollectionViewUICollectionViewControllerと一緒に使用する方法については多くのチュートリアルがありますが、通常のビューで実装する方法についてはありません。どうやってそれをしますか?

20

1)UICollectionViewUIViewにドラッグし、適切なサイズにします。

2)コレクションビューの.hファイルにIBOutletでもあるプロパティを作成します。

@property (nonatomic, retain) IBOutlet UICollectionView *myCollectionView;

3)再び.hファイルでデリゲートを宣言すると、.hは次のようになります。

@interface UtaQuickView : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate> {

}

@property (nonatomic, retain) IBOutlet UICollectionView *myCollectionView;

4)ストーリーボードでmyCollectionViewIBOutletを接続します。

5)(オプション)iOS6より古いものをターゲットにしている場合は、myCollectionViewプロパティを合成します。 iOS6をターゲットにしている場合は、自動合成されます。これは、UICollectionViewsだけでなく、すべてのプロパティに当てはまります。したがって、iOS6では、@synthesize myCollectionView = _myCollectionViewする必要はまったくありません。プロパティにアクセスする必要がある場合は、どこでも_mycollectionviewを使用できます。

6).mファイルviewDidLoadで、delegatedataSource.を設定します

_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>のすべてのメソッドにアクセスできることに注意してください。

ICollectionViewDataSourceプロトコルドキュメント

ICollectionViewDelegateプロトコルドキュメント

34
jhilgert00

そしてSwiftバージョン

  1. UICollectionViewをUIViewにドラッグし、適切なサイズにします。

  2. UIViewControllerを変更して、UICollectionViewDataSourceとUICollectionViewDelegateを拡張します

  3. 必要な機能を実装する

  4. コントロール-ストーリーボードからクラスにドラッグして、アウトレット「collectionView」を作成します

  5. ViewDidLoad()で、デリゲートとデータソースを自分自身collectionView.delegate = selfcollectionView.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) {

        }
    }
3
Michael Hudson

UICollectionViewをUIViewにドラッグし、適切なサイズにします。コレクションビューの.hファイルにIBOutletでもあるプロパティを作成します。

_@property (nonatomic, retain) IBOutlet UICollectionView *myCollectionView;
_

uIViewでは、最初に-(void)awakeFromNibでUICollectionViewセルを宣言する必要があります

_[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;        
}
_
2
Hilaj
  1. Uiviewcontrollerをストーリーボードにドラッグします。
  2. 新しいuiviewcontollerの新しいクラスファイルを作成します
  3. 新しく作成したクラスをビューコントローラーに設定します。そして、プロトコルメソッドを.hファイルに追加します。 -UICollectionViewDelegate、UICollectionViewDataSource
  4. Uicollectionviewをビューコントローラにドラッグします。デフォルトでは、collectionviewを含むuicollectionviewcellがあります。
  5. セルカスタマイズ用の新しいクラスをuicollectionviewcellのサブクラスとして作成し、そのクラスをIDインスペクターのセルに設定します。また、属性インスペクターで再利用識別子を設定します。これは、uicollectionviewcellを識別するために指定する必要のある名前です。ここでセルと言います。
  6. Uicollectionviewcell内にimageview(必要に応じて何でもかまいません)をドラッグアンドドロップし、収まるようにサイズを変更します。
  7. Imageviewで画像を設定します(この画像はcollectionviewで繰り返し表示されます)。
  8. Uicollectionviewを使用してデリゲートとデータソースを対応するビューコントローラーに設定します。
  9. データソースメソッドを設定します-numberOfItemsInSectionおよびcellForItemAtIndexPath。

  10. NumberOfItemsInSectionメソッドを使用して必要なセル数を返します。ここで10と言います。

  11. CellForItemAtIndexPathで表示するセルを返します。

    NSString *  identifier = @"cell";
    CollectionViewCellForDay * cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
    return cell;
    

これで、10セルのコレクションビューを視覚的に確認できるようになります:)

1
Tony