我想创建一个带按钮的网格。我看到的大多数示例应用程序都解释了如何创建图像网格,但没有人解释按钮。
如何在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
答案 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/