首先,如果答案很明显,但我对 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 进行子类化。
代码编译没有错误,但屏幕上没有任何显示。我已经尽我所能检查代码大约一两个小时,但我所做的没有任何改变。我的控制器类是一个简单的骨架,试图让集合视图显示在屏幕上,而我的单元类是一个骨架单元,其中只有一个图像视图和标签。
感谢您提供任何帮助以使其正常工作!
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
我的CollectionViewCell.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