2016-01-28 2 views
0

Я создал код в моей кнопке, чтобы переключаться между моим cell identifier, который делает это довольно хорошо, но, очевидно, мне нужно было установить, а исходный идентификатор ячейки - маленький значок, так как я хочу удалить этот идентификатор ячейки и заменить его другим при нажатии кнопки. Мой текущий код выглядит следующим образом:Переключить кнопку размера ячейки, не меняя идентификатор ячейки UIViewController

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"]) 
      [email protected]"ListView"; 
    else if 
     ([reuseIdentifier isEqualToString:@"ListView"]) 
      [email protected]"LargeIcon"; 
    else if 
     ([reuseIdentifier isEqualToString:@"LargeIcon"]) 
      [email protected]"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, так что я Жду» t получить любые ошибки, так что я не установил один, так что действительно, что я прошу, это способ установить начальный reuseidzntifier и заменить его будет следующим, когда я переключаюсь между нажатиями кнопки.

Также было бы полезно, если бы кто-то мог указать мне в правильном направлении, добавляя изображения значков к каждому щелчку кнопки.

Проблема возникает, когда я нажимаю кнопку, как показано на следующих изображениях, сами ячейки меняются, но исходный идентификатор ячейки остается помещенным.

enter image description here

ответ

1

Из того, что я понимаю ваши UICollectionViewCell s работают отлично. Вам просто нужно настроить их размер, когда ячейки переключаются.

- (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; 
} 
+0

Извините, но я своего рода новичок в этом и я только учусь в течение месяца, как именно бы я реализовать размер моего reuseIdentifiers в коде вы дали, и мне нужно, чтобы добавить этот код в мой файл viewController? Спасибо заранее. –

+0

Ваши * reuseIdentifiers * в основном описывают, какую ячейку вы хотите отображать во время выполнения, правильно? Поэтому на основе этих повторных Идентификаторов вы можете возвращать разные размеры для разных ячеек. Проверьте обновленный ответ на образец кода. И Да, это будет добавлено в ваш 'GroupViewController.m' – UditS

+0

Полностью отключен от темы, но вы не можете никоим образом направить меня в правильном направлении, как изменить значок кнопки на каждом щелчке, пожалуйста. много Спасибо заранее, и ваш код работал отлично! –