实际上我已经采用了两个集合视图控制器。在第一个集合视图控制器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;
}
答案 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进行此操作。
希望这有帮助。