如何在集合视图中单击单元格创建按钮操作

时间:2014-05-27 03:50:05

标签: ios objective-c storyboard uicollectionview

实际上我已经采用了两个集合视图控制器。在第一个集合视图控制器iIhave传递了一系列图像。单击一个图像,我想显示另一个集合视图控制器。如何做到这一点...请建议我。

- (void)viewDidLoad
{
[super viewDidLoad];

recipeImages = [NSArray arrayWithObjects:@"angry_birds_cake.jpg", @"creme_brelee.jpg", @"egg_benedict.jpg", @"full_breakfast.jpg", @"green_tea.jpg", @"ham_and_cheese_panini.jpg", @"ham_and_egg_sandwich.jpg", @"hamburger.jpg", @"instant_noodle_with_egg.jpg", nil];
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return recipeImages.count;
}

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{

}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"Cell";

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:100];
recipeImageView.image = [UIImage imageNamed:[recipeImages objectAtIndex:indexPath.row]];
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"photo-frame.png"]];
for (UIView *view in cell.subviews) {
    if ([view isKindOfClass:[UILabel class]]) {
        [view removeFromSuperview];
    }
}


UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 0, 150, 170)];//Set the frame as per your requirement.
label.font=[UIFont systemFontOfSize:10];

[label setText:[NSString stringWithFormat:@"%@",[categoryArray objectAtIndex:indexPath.row]]];
[cell addSubview:label];
//NSLog(@"hiiiii");


return cell;

}

2 个答案:

答案 0 :(得分:1)

如果您想在另一个视图控制器中显示第二个集合视图,您只需在didSelectItemAtIndexPath:中推送带有集合视图的视图控制器。

如果要在同一视图控制器中显示第二个集合视图,可以创建两个集合视图并将第二个集合视图设置为隐藏。然后在didSelectItemAtIndexPath:中,您可以设置要显示的第二个集合视图,并将第一个集合视图设置为隐藏。这可以通过collectionView.hidden = YES or NO.

完成

答案 1 :(得分:1)

要在点击另一个UICollectionViewController中的项目时显示另一个UICollectionViewController,您必须使用didSelectItemAtIndexPath功能。你可以这样做:

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    int itemNo = (int)[indexPath row]+1;
    CollectionViewCell *selectedCell = (CollectionViewCell*)[collectionView cellForItemAtIndexPath:indexPath];
    switch (itemNo) {
        case 1:
        {
             //perform segue to another UICollectionViewController.
        }
        case 2:
        {
             //perform segue to another UICollectionViewController.
        }
        .
        .
        .
     }
}

此处itemNo是项目(单元格),从集合视图中单击。如果您必须为所有项目点击重定向到相同的UICollectionViewController,那么您将不需要switch,您可以直接使用Segue进行此操作。

希望这有帮助。