Кнопка переключения размера ячейки без изменения идентификатора ячейки UIViewController
Я создал код в моей кнопке, чтобы переключаться между cell identifier
что делает это очень хорошо, но, очевидно, мне нужно было установить и исходный идентификатор ячейки, который является маленьким значком, так как бы я мог удалить этот идентификатор ячейки и заменить его другим, когда кнопка нажата. Мой текущий код выглядит следующим образом:
GroupsViewController.m
#import "GroupsViewController.h"
#import "CustomCell.h"
@interface GroupsViewController ()
{
NSArray *arrayOfImages;
NSArray *arrayOfDescriptions;
}
@end
@implementation GroupsViewController
{
NSString *reuseIdentifier;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[[self GroupsCollectionView]setDataSource:self];
[[self GroupsCollectionView]setDelegate:self];
reuseIdentifier= @"SmallIcon";
arrayOfImages = [[NSArray alloc]initWithObjects:@"?.png", nil];
arrayOfDescriptions = [[NSArray alloc]initWithObjects:@"?", nil];
}
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return [arrayOfDescriptions count];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
[[cell IconImage]setImage:[UIImage imageNamed:[arrayOfImages objectAtIndex:indexPath.item]]];
[[cell IconLabel]setText:[arrayOfDescriptions objectAtIndex:indexPath.item]];
return cell;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
//Dispose of any resources that can be recreated.
}
- (IBAction)cellToggleAction:(id)sender {
if([reuseIdentifier isEqualToString:@"SmallIcon"])
reuseIdentifier=@"ListView";
else if
([reuseIdentifier isEqualToString:@"ListView"])
reuseIdentifier=@"LargeIcon";
else if
([reuseIdentifier isEqualToString:@"LargeIcon"])
reuseIdentifier=@"SmallIcon";
[self.GroupsCollectionView reloadData];
}
@end
CustomCell.h
#import <UIKit/UIKit.h>
@interface CustomCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIImageView *IconImage;
@property (weak, nonatomic) IBOutlet UILabel *IconLabel;
@end
Я предполагаю, что это связано со мной установкой reuseIdentifier
в - (void)viewDidLoad
чтобы я не получил никаких ошибок, чтобы я не установил одну, так что на самом деле то, что я прошу, это способ установить начальный reuseidzntifier и заменить его следующим образом, когда я переключаюсь между нажатиями кнопок.
Также было бы полезно, если бы кто-то мог указать мне правильное направление для добавления изображений значков к каждому нажатию кнопки.
Проблема возникает, когда я нажимаю кнопку, как показано на следующих изображениях, сами ячейки меняются, но первоначальный идентификатор ячейки остается на месте.
1 ответ
Из того, что я понимаю ваш UICollectionViewCell
с работают нормально. Вам просто нужно отрегулировать их размер при переключении клеток.
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGSize cellSize;
// Return required size based on your identifiers
if([reuseIdentifier isEqualToString:@"SmallIcon"])
cellSize = CGSizeMake(50, 50); // Sample size
else if
([reuseIdentifier isEqualToString:@"ListView"])
cellSize = CGSizeMake(80, 80); // Sample size
else if
([reuseIdentifier isEqualToString:@"LargeIcon"])
cellSize = CGSizeMake(120, 120); // Sample size
return cellSize;
}