如何在iPhone应用程序中实现PSCollectionView?

时间:2012-12-03 13:22:05

标签: iphone objective-c ios ios5 xcode4

在我的应用程序中,我有六个按钮需要放在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
}

1 个答案:

答案 0 :(得分:5)

此问题发布后,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;
}