2013-02-14 44 views
10

Bir menüsünü görüntülemek için bir UICollectionView kullanıyorum ve ürün ÇOK garip bir şekilde seçilmiş ediliyor. İşte Garip UICollectionView Seçim Davranışı

onları doldurur benim statik veridir:

self.menuItems = @[@{@"text" : @"First", @"image" : @"180-stickynote.png"}, 
        @{@"text" : @"Second", @"image" : @"180-stickynote.png"}, 
        @{@"text" : @"Third", @"image" : @"180-stickynote.png"}, 
        @{@"text" : @"Fourth", @"image" : @"180-stickynote.png"}, 
        @{@"text" : @"Fifth", @"image" : @"180-stickynote.png"}, 
        @{@"text" : @"Sixth", @"image" : @"180-stickynote.png"}]; 

Ve özel alt sınıf sadece UILabel ve UIImageView prototip hücresine bağlı ve vardır hücre sağlayıcı,:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 

    CUMenuCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MenuCell" forIndexPath:indexPath]; 

    NSDictionary *cellInfo = [self.menuItems objectAtIndex:indexPath.row]; 

    cell.imageView.image = [UIImage imageNamed:[cellInfo valueForKey:@"image"]]; 

    cell.label.text = [cellInfo valueForKey:@"text"]; 

    return cell; 
} 

İşte satır seç yöntemini, unvan giriş ve öğenin satır (hepsi bölümde 0 konum) yaptığımız geçerli:

- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"%@: %d", [[self.menuItems objectAtIndex:indexPath.row] valueForKey:@"text"], indexPath.row); 
} 

Son olarak, benim menünün ekran görüntüsü: Ben Birinci öğe seçtiğinizde İşte

enter image description here

günlük olduğu için Altıncı, daha sonra geri İlk (Birinci, İkinci, Üçüncü, Dördüncü Altıncı dan, Beşinci, Altıncı, Altıncı, Beşinci olarak, Dördüncü, Üçüncü, ikinci, birinci) (12 toplam musluklar, ilk kademe bile) ikinci Altıncı musluğunu kayıt, ne de yapar unutmayın:

------------------------------------- FIRST TAP ON FIRST HERE 
2013-02-13 19:38:37.343 App[1383:c07] First: 0 // second tap, on Second 
2013-02-13 19:38:38.095 App[1383:c07] Second: 1 // third tap, on Third 
2013-02-13 19:38:38.678 App[1383:c07] Third: 2 // fourth tap, on Fourth 
2013-02-13 19:38:39.375 App[1383:c07] Fourth: 3 // fifth tap, on Fifth 
2013-02-13 19:38:40.167 App[1383:c07] Fifth: 4 // so on 
2013-02-13 19:38:41.751 App[1383:c07] Sixth: 5 
------------------------------------- SECOND TAP ON SIXTH HERE 
2013-02-13 19:38:42.654 App[1383:c07] Fifth: 4 
2013-02-13 19:38:43.318 App[1383:c07] Fourth: 3 
2013-02-13 19:38:44.495 App[1383:c07] Third: 2 
2013-02-13 19:38:45.071 App[1383:c07] Second: 1 

cevap

52

çünkü sen var o didSelectItemAtIndexPath: yerine didDeselectItemAtIndexPath: yöntemini kullanıyor. içinde bunu yazarken kod tamamlama kullanıyorsanız, özellikle kolay bir hata yapmak için.

+1

Vay. Şu an çok geç çığlık atabilirim. Çok teşekkür ederim, içtenlikle! – Josh

+0

@Josh, sorun değil, bir kereden fazla yaptığım bir hata. – rdelmar

+0

Vay. Bu hatayı da yaptım. İş yerinde biraz karanlık büyülü olduğunu düşündüm. Ama hayır. Kendimi büyük zaman kandırdım :) – villapossu