2012-10-06 32 views
5

Khi sử dụng UICollectionView, tôi bị lúng túng khi nhận giá trị indexPath của phương pháp didSelectItemAtIndexPath.indexPath Giá trị của UICollectionView

Tôi đang sử dụng các dòng mã sau đây trong phương pháp didSelectItemAtIndexPath:

//FileList is an NSArray of files from the Documents Folder within my app. 
//This line gets the indexPath of the selected item and finds the same index in the Array 
NSString *selectedItem = [NSString stringWithFormat:@"%@",[FileList objectAtIndex:indexPath.item]]; 

//Now the selected file name is displayed using NSLog 
NSLog(@"Selected File: %@", selectedItem); 

Vấn đề là các indexPath luôn trả về 0 (xem dưới đây code) và kết quả là chỉ mục đầu tiên trong FileList NSArray đã từng được chọn.

Tôi đã thử các thông số khác nhau như

  • indexPath.row
  • indexPath.item
  • và chỉ đơn giản indexPath

TẤT CẢ các trả về giá trị 0 trong báo cáo NSLog sau:

NSLog(@"index path: %d", indexPath.item); //I also tried indexPath.row here 

Có lẽ tôi chỉ định dạng NSString không đúng cách, tuy nhiên tôi không nghĩ đây là trường hợp vì không có cảnh báo và tôi đã thử định dạng nó khác nhau ở những nơi khác.

Tại sao indexPath luôn trả về 0?

Mọi trợ giúp sẽ được đánh giá cao! Cảm ơn!

+1

Vui lòng chỉ cách bạn định dạng chuỗi cho 'NSLog' – dasblinkenlight

+0

' .emem' là thuộc tính thích hợp ở đây, nhưng chức năng này không khác với '.row'. Bạn cần hiển thị nhiều hơn - làm sao bạn biết nó bằng không? FileList là gì? – jrturton

+0

Tôi đã chỉnh sửa câu hỏi và bao gồm cách tôi định dạng chuỗi cho NSLog và tôi đã làm rõ những gì FileList là (vui lòng đọc mã nhận xét) –

Trả lời

1

Phương thức ủy nhiệm bạn đang sử dụng luôn cung cấp đường dẫn chỉ mục của ô đã được chọn. Cố gắng gỡ lỗi bằng điểm ngắt trong cuộc gọi NSLog của bạn. Khi trình gỡ rối dừng lại, nó nhìn vào Vùng gỡ lỗi ở phía dưới và sử dụng bảng điều khiển (Xem => Gỡ lỗi Vùng => Kích hoạt Bàn điều khiển nếu bạn cần).

Gõ vào giao diện điều khiển: po indexPath

Bạn sẽ thấy một cái gì đó như thế này nếu sản phẩm được chọn là một trong 5 của danh sách trong phần: 0 (phần đầu tiên và có lẽ là người duy nhất)

<NSIndexPath 0xa8a6050> 2 indexes [0, 5]

Hy vọng điều này sẽ giúp tìm ra những gì đang xảy ra.

30

Có nguy cơ nêu rõ điều này, hãy đảm bảo mã của bạn nằm trong phương thức didSelectItemAtIndexPath thay vì didDeselectItemAtIndexPath. Bạn sẽ nhận được các giá trị indexPath rất khác nhau cho một sự kiện chạm nhất định trong phương thức thứ hai và việc chèn một giá trị sai với mã Xcode hoàn toàn dễ dàng.

+2

Dude, bạn đã cứu tôi. Tôi đã gỡ lỗi trong một giờ, cảm ơn. –

+2

Điều này khiến tôi hai lần ngay bây giờ. Grrr ... – malaki1974

+2

Đập bạn, tự động hoàn thành – DaGaMs

Các vấn đề liên quan