使用UICollectionView的按钮网格?

时间:2013-09-17 08:22:28

标签: ios objective-c uicollectionview uicollectionviewcell

我想创建一个带按钮的网格。我看到的大多数示例应用程序都解释了如何创建图像网格,但没有人解释按钮。

如何在UICollectionView的单元格中设置按钮?

这是我的代码,

FirstViewController.h

#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController<UICollectionViewDataSource,UICollectionViewDelegate>
@property (weak, nonatomic) IBOutlet UICollectionView *myCollectView;
@end

FirstViewController.m

#import "FirstViewController.h"
#import "CustomCell.h"

@interface FirstViewController ()
{
    NSArray *arrayOfBtns;
}
@end

@implementation FirstViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[self myCollectView]setDelegate:self];
    [[self myCollectView]setDataSource:self];
    // Do any additional setup after loading the view, typically from a nib.
    arrayOfBtns=[[NSArray alloc]initWithObjects:@"Save",@"Goto", nil];
}
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return [arrayOfBtns count];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier=@"Cell";
    CustomCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
    //[[cell btn]setText:[arrayOfBtns objectAtIndex:indexPath.item  ]];
    return cell;
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

CustomCell.h

    #import <UIKit/UIKit.h>

@interface CustomCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIButton *btn;

@end

CustomCell.m

 #import "CustomCell.h"

@implementation CustomCell

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}
- (IBAction)btn:(id)sender {
}
@end

3 个答案:

答案 0 :(得分:1)

您要出列的单元格不是CustomCell,因为您没有告诉UICollectionView使用CustomCell作为可重复使用的单元格。

viewDidLoad:中,添加以下行:

  

[[self myCollectionView] registerClass:[CustomCell class] forCellWithReuseIdentifier:@“Cell”];

答案 1 :(得分:0)

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
    //[cell.btn setText:[arrayOfBtns objectAtIndex:indexPath.item]];
    return cell;
}

细胞是零。您应该注册CellIdentifier的自定义单元格。

答案 2 :(得分:-1)

您可以在此处找到如何创建自定义单元格:http://www.goapps.pl/blog/perfecting-uitableview-step-one-custom-cells/