我正在关注教程并进行溢出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