- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我之前创建了三个不同的 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 。
如您所见,我现在已经删除了三个 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.
编辑:
#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/
我之前创建了三个不同的 UICollectionView,并在每个 View 中放置了三个不同的自定义单元格,通过一个简单的标签栏按钮将它们链接在一起。在一些帮助之后,我设法将代码缩小到只有一个 UI
我是一名优秀的程序员,十分优秀!