1
我正在按照教程進行操作並溢出UICollectionView
。此外,我想有一個項目的選擇,然後出現一個新的UIViewController
。UICollectionView的選擇
請問我該怎麼做? 我可以像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
http://stackoverflow.com/questions/15091847/i-have-a-uicollectionview-and-i-want-to-show-an-image-in-a-cell-that-goes-to- A/15105450#15105450 – Alex