gpt4 book ai didi

ios - 单个 UICollectionViewController 中的多个自定义单元格,在 NavigationBarButton 之间循环

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:01 26 4
gpt4 key购买 nike

我之前创建了三个不同的 UICollectionView,并在每个 View 中放置了三个不同的自定义单元格,通过一个简单的标签栏按钮将它们链接在一起。在一些帮助之后,我设法将代码缩小到只有一个 UICollectionViewController,现在我只需要知道如何通过 NavigationBarButton 在每个自定义单元格之间切换。

如果我可以根据单击的按钮选项更改按钮图标,这也会很有帮助(需要单击三次,如下所示(ListView、SmallIconView 和 LargeIconView))。

有什么建议吗?

ViewController.h

#import "GroupsViewController.h"
#import "CustomCell.h"

@interface GroupsViewController ()
{
NSArray *arrayOfImages;
NSArray *arrayOfDescriptions;
}

@end

@implementation GroupsViewController
{
NSString *reuseIdentifier;
}

- (void)viewDidLoad
{
[super viewDidLoad];
reuseIdentifier= @"SmallIcon";
[[self GroupsCollectionView]setDataSource:self];
[[self GroupsCollectionView]setDelegate:self];


arrayOfImages = [[NSArray alloc]initWithObjects:@"ac-cars.png", nil];
arrayOfDescriptions = [[NSArray alloc]initWithObjects:@"one", 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 SmallIcon; //error message (use of undeclared identifier)

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
//Dispose of any resources that can be recreated.
}

@end

自定义单元格.h

#import <UIKit/UIKit.h>

@interface CustomCell : UICollectionViewCell

@property (weak, nonatomic) IBOutlet UIImageView *IconImage;
@property (weak, nonatomic) IBOutlet UILabel *IconLabel;

@end

我现在已将所有三个自定义单元格连接到一个 UICollectionView 中,将所有标签和图像连接到相同的 socket 。 Collection View With 3 Custom Cells

如您所见,我现在已经删除了三个 View Controller 并将所有自定义单元格放入一个 UICollectionView 中。我已将所有标签和图像链接到适当的 channel 。

如何连接标签栏按钮?我在哪里实现按钮的代码?非常感谢

最佳答案

您只需要一个包含三个 customCell 的 collectionView。

Add three collectionViewCell For the landscape layout with a different reuseIdentifier for each.Then on each button action,change the reuseIdentifier and reload the collectionView.

这就是您的做法:

为 collectionViewCell 的 reuseIdentifier 声明一个 NSString 变量,例如:

NSString reuseIdentifier;在实现部分。

然后在 viewWillApper 中为默认的单元格设置一个默认标识符。

reuseIdentifier=@"largeIconVIewCellIdentifier";

然后在导航栏按钮的按钮 Action 中,根据需要设置reuseIdentifier并重新加载collectionview。代码如下:

-(void)cellToggleAction
{
if([reuseIdentifier isEqualToString:@"SmallIcon"])
reuseIdentifier=@"ListView";
}
else if ([reuseIdentifier isEqualToString:@"ListView"])
reuseIdentifier=@"LargeIcon";
}
else if ([reuseIdentifier isEqualToString:@"LargeIcon"])
reuseIdentifier=@"SmallIcon";
}
[collectionView reloadData];
}

就是这样!!一切就绪。以下是供您引用的示例图片。

These are three customCells with same class but different reuse identifiers.

enter image description here

编辑:

#import "GroupsViewController.h"
#import "CustomCell.h"

@interface GroupsViewController ()
{
NSArray *arrayOfImages;
NSArray *arrayOfDescriptions;
}

@end

@implementation GroupsViewController
{
NSString *reuseIdentifier;

}

- (void)viewDidLoad
{
[super viewDidLoad];
reuseIdentifier= @"SmallIcon";
[[self GroupsCollectionView]setDataSource:self];
[[self GroupsCollectionView]setDelegate:self];


arrayOfImages = [[NSArray alloc]initWithObjects:@"ac-cars.png", nil];
arrayOfDescriptions = [[NSArray alloc]initWithObjects:@"one", 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:CellIdentifier1 forIndexPath:indexPath];

[[cell SmallIconImage]setImage:[UIImage imageNamed:[arrayOfImages objectAtIndex:indexPath.item]]];
[[cell SmallIconLabel]setText:[arrayOfDescriptions objectAtIndex:indexPath.item]];

return SmallIcon;


}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
//Dispose of any resources that can be recreated.
}

@end

在 CustomCell.h 文件中:

        #import <UIKit/UIKit.h>

@interface CustomCell : UICollectionViewCell

//Small Icon
@property (weak, nonatomic) IBOutlet UIImageView *SmallIconImage;
@property (weak, nonatomic) IBOutlet UILabel *SmallIconLabel;
@end

还要添加我在上面添加的 buttonAction。

关于ios - 单个 UICollectionViewController 中的多个自定义单元格,在 NavigationBarButton 之间循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34954569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com