gpt4 book ai didi

ios - 选择UICollectionView

转载 作者:行者123 更新时间:2023-12-01 17:56:57 25 4
gpt4 key购买 nike

我正在学习一个教程,并制作了一个UICollectionView溢出。现在,我还要对项目进行选择,然后选择一个新的UIViewController

我可以知道怎么做吗?
我可以像UITable一样选择选择索引= 0、1或2等吗?
该代码显示正确的NSLog,但未转到其他UIViewController

 - (void)tapCell:(UITapGestureRecognizer *)inGestureRecognizer
{
NSIndexPath *theIndexPath = [self.collectionView indexPathForCell:(UICollectionViewCell *)inGestureRecognizer.view];

if (theIndexPath.row ==0) {
NSLog(@"****");
page *noteDetailViewControler = [[page alloc] initWithNibName:@"page" bundle:nil]; }
}

这是完整的代码:
@implementation CDemoCollectionViewController

- (void)viewDidLoad
{
[super viewDidLoad];

self.cellCount = 10;
self.imageCache = [[NSCache alloc] init];

[self.collectionView registerNib:[UINib nibWithNibName:NSStringFromClass([CCoverflowTitleView class]) bundle:NULL] forSupplementaryViewOfKind:@"title" withReuseIdentifier:@"title"];

NSMutableArray *theAssets = [NSMutableArray array];
NSURL *theURL = [[[NSBundle mainBundle] resourceURL] URLByAppendingPathComponent:@"Images"];
NSEnumerator *theEnumerator = [[NSFileManager defaultManager] enumeratorAtURL:theURL includingPropertiesForKeys:NULL options:NSDirectoryEnumerationSkipsPackageDescendants | NSDirectoryEnumerationSkipsHiddenFiles errorHandler:NULL];
for (theURL in theEnumerator)
{
if ([[theURL pathExtension] isEqualToString:@"jpg"])
{
[theAssets addObject:theURL];
}
}
self.assets = theAssets;
self.cellCount = self.assets.count;
}

#pragma mark -

- (void)updateTitle
{
// Asking a collection view for indexPathForItem inside a scrollViewDidScroll: callback seems unreliable.
// NSIndexPath *theIndexPath = [self.collectionView indexPathForItemAtPoint:(CGPoint){ CGRectGetMidX(self.collectionView.frame) + self.collectionView.contentOffset.x, CGRectGetMidY(self.collectionView.frame) }];
NSIndexPath *theIndexPath = ((CCoverflowCollectionViewLayout *)self.collectionView.collectionViewLayout).currentIndexPath;
if (theIndexPath == NULL)
{
self.titleView.titleLabel.text = NULL;
}
else
{
NSURL *theURL = [self.assets objectAtIndex:theIndexPath.row];

self.titleView.titleLabel.text = [NSString stringWithFormat:@"%@", theURL.lastPathComponent];
}
}

#pragma mark -

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;
{
return(self.cellCount);
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
{
CDemoCollectionViewCell *theCell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"DEMO_CELL" forIndexPath:indexPath];

if (theCell.gestureRecognizers.count == 0)
{
[theCell addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapCell:)]];
}

theCell.backgroundColor = [UIColor colorWithHue:(float)indexPath.row / (float)self.cellCount saturation:0.333 brightness:1.0 alpha:1.0];

if (indexPath.row < self.assets.count)
{
NSURL *theURL = [self.assets objectAtIndex:indexPath.row];
UIImage *theImage = [self.imageCache objectForKey:theURL];
if (theImage == NULL)
{
theImage = [UIImage imageWithContentsOfFile:theURL.path];

[self.imageCache setObject:theImage forKey:theURL];
}

theCell.imageView.image = theImage;
theCell.reflectionImageView.image = theImage;
theCell.backgroundColor = [UIColor clearColor];
}

return(theCell);
}

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
CCoverflowTitleView *theView = [self.collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"title" forIndexPath:indexPath];
self.titleView = theView;
[self updateTitle];
return(theView);
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[self updateTitle];
}

#pragma mark -

- (void)tapCell:(UITapGestureRecognizer *)inGestureRecognizer
{
NSIndexPath *theIndexPath = [self.collectionView indexPathForCell:(UICollectionViewCell *)inGestureRecognizer.view];

if (theIndexPath.row ==0) {
NSLog(@"****");
page *noteDetailViewControler = [[page alloc] initWithNibName:@"page" bundle:nil]; }
}


@end

最佳答案

尝试使用以下UICollectionViewDelegate函数:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;

如果得到选择,则可以使用以下函数进行处理:
- (void)selectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UICollectionViewScrollPosition)scrollPosition;
- (void)deselectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated;

关于ios - 选择UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15706864/

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