在我的应用程序中,我有六个按钮需要放在pscollectionview上。
我已经将pscollectionview放置在应用程序中,但是我不愿意使用数据源和委托方法吗?
有人能提出这个例子会有所帮助吗?
以下是我的代码:
- (void)viewDidLoad
{
self.collectionView = [[PSCollectionView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
self.collectionView.delegate = self;
self.collectionView.collectionViewDelegate = self;
self.collectionView.collectionViewDataSource = self;
self.collectionView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:self.collectionView];
UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn1.frame = CGRectMake(10, 30, 140, 130);
[self.collectionView addSubview:btn1];
UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn2.frame = CGRectMake(170, 30, 140, 130);
[self.collectionView addSubview:btn2];
UIButton *btn3 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn3.frame = CGRectMake(10, 180, 140, 130);
[self.collectionView addSubview:btn3];
UIButton *btn4 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn4.frame = CGRectMake(170, 180, 140, 130);
[self.collectionView addSubview:btn4];
UILabel *loadingLabel = [[UILabel alloc]initWithFrame:CGRectMake(20, 100, 50, 20)];
loadingLabel.text = @"Loading...";
loadingLabel.textAlignment = UITextAlignmentCenter;
[self.collectionView addSubview:loadingLabel];
//self.collectionView.loadingView = loadingLabel;
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (NSInteger)numberOfViewsInCollectionView:(PSCollectionView *)collectionView {
return 1;
}
- (PSCollectionViewCell *)collectionView:(PSCollectionView *)collectionView viewAtIndex:(NSInteger)index {
}
- (CGFloat)heightForViewAtIndex:(NSInteger)index {
NSDictionary *item = [self.items objectAtIndex:index];
return [NDACCustomView heightForViewWithObject:item inColumnWidth:self.collectionView.colWidth];
}
- (void)collectionView:(PSCollectionView *)collectionView didSelectView:(PSCollectionViewCell *)view atIndex:(NSInteger)index {
// NSDictionary *item = [self.items objectAtIndex:index];
// You can do something when the user taps on a collectionViewCell here
}
最佳答案
发布此问题后,PSCollectionView的委托方法已更新。
访问https://github.com/ptshih/PSCollectionView。
只需在这里分享我的代码。
- (void)viewDidLoad
{
self.collectionView = [[PSCollectionView alloc] initWithFrame:self.view.frame];
self.collectionView.delegate = self; // This is for UIScrollViewDelegate
self.collectionView.collectionViewDelegate = self;
self.collectionView.collectionViewDataSource = self;
self.collectionView.backgroundColor = [UIColor clearColor];
self.collectionView.autoresizingMask = ~UIViewAutoresizingNone;
// Specify number of columns for both iPhone and iPad
self.collectionView.numColsPortrait = 3;
self.collectionView.numColsLandscape = 4;
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
[self.view addSubview:_collectionView];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (Class)collectionView:(PSCollectionView *)collectionView cellClassForRowAtIndex:(NSInteger)index {
return [MCCollectionViewCell class];
}
- (NSInteger)numberOfRowsInCollectionView:(PSCollectionView *)collectionView {
return 30;
}
- (UIView *)collectionView:(PSCollectionView *)collectionView cellForRowAtIndex:(NSInteger)index {
MCCollectionViewCell *cell = (MCCollectionViewCell *)[_collectionView dequeueReusableViewForClass:[MCCollectionViewCell class]];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MCCollectionViewCell" owner:self options:nil];
cell = (MCCollectionViewCell *)[nib objectAtIndex:0];
}
NSOperationQueue *imageQueue = [[NSOperationQueue alloc] init];
[imageQueue addOperation:[NSBlockOperation blockOperationWithBlock:^{
int r = arc4random() % 3;
NSString *imageName = [NSString stringWithFormat:@"image%d", r];
UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"jpg"]];
[[NSOperationQueue mainQueue] addOperation:[NSBlockOperation blockOperationWithBlock:^{
cell.previewImageView.image = image;
cell.titleLabel.text = imageName;
}]];
}]];
return cell;
}
- (CGFloat)collectionView:(PSCollectionView *)collectionView heightForRowAtIndex:(NSInteger)index {
return 290.0;
}
关于iphone - 如何在iPhone App中实现PSCollectionView?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13684158/