最初に、答えが非常に明白である場合はお詫びしますが、私はiOS開発にまったく慣れていません(これは、私が遊んでいるだけなのに、プログラムしようとしている最初のアプリです:P)ので、私の問題がややマイナーはかなり高いです。
コード (xcode プロジェクトを含む zip ファイル) :
http://www.mediafire.com/?p55xw0q2dwwwwvm
他に有害なものは何もないと約束します:)。
問題:
私はフォローしています:
http://www.techotopia.com/index.php/An_iPhone_iOS_6_Storyboard-based_Collection_View_Tutorial
遊んでみる UICollectionView を作成しようとしています。「アプリケーションのテスト」セクションに進みました。ガイドのいくつかの部分に独自の解釈を加えました。
別の写真を使用する代わりに、下部に数字だけのラベルが付いた 1 つの写真を使用します。数は動的に設定されます。はい、使用している配列なしで実装できますが、その配列があると、将来このプロジェクトの範囲を拡張する場合に役立ちます。
viewDidLoad にコードを追加して、ビュー レイアウトをフロー レイアウトに設定しました。これは、基本的なフォームでこれが機能するようになったら、flowlayout をサブクラス化する必要がある書式設定をいじりたいので、将来の保証のために再度行われました。
コードはエラーなしでコンパイルされますが、画面には何も表示されません。約 1 時間か 2 時間、できる限りコードをチェックしましたが、何の違いもありませんでした。私のコントローラ クラスは、コレクション ビューを画面に表示するための必要最小限の試みであり、セル クラスは、イメージビューとラベルだけを含む必要最小限のセルです。
これを機能させるために与えられた助けに感謝します!
tl;dr 太字のものを見てください。便宜上、以下にコードを示します。
MyCollectionViewController.m
#import "MyCollectionViewController.h"
@interface MyCollectionViewController ()
@property (nonatomic, strong) NSMutableArray *dataArray;
@end
@implementation MyCollectionViewController
@synthesize dataArray = _dataArray;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Create data to display
for(int i = 0; i < 50; i++){
[self.dataArray addObject:[NSString stringWithFormat:@"%d", i]];
}
// Configure Layout
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[self.collectionView setCollectionViewLayout:flowLayout];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark -
#pragma mark UICollectionViewDataSource
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section
{
return [self.dataArray count];
}
-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCollectionViewCell *myCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
int row = [indexPath row];
UIImage* image = [UIImage imageNamed:@"200px-AND_ANSI"];
myCell.cellTitle = [self.dataArray objectAtIndex:row];
myCell.cellImageView.image = image;
myCell.backgroundColor = UIColor.whiteColor;
return myCell;
}
MyCollectionViewcontroller.h
#import <UIKit/UIKit.h>
#import "MyCollectionViewCell.h"
@interface MyCollectionViewController : UICollectionViewController <UICollectionViewDataSource, UICollectionViewDelegate>
@end
MyCollectionViewCell.h
#import <UIKit/UIKit.h>
@interface MyCollectionViewCell : UICollectionViewCell
@property (strong, nonatomic) IBOutlet UIImageView *cellImageView;
@property (strong, nonatomic) IBOutlet UILabel *cellTitle;
@end
MyCollectionViewCell.m
#import "MyCollectionViewCell.h"
@implementation MyCollectionViewCell
@synthesize cellImageView = _cellimageView;
@synthesize cellTitle = _cellTitle;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
@end