2012-12-07 26 views
13

Tôi có một UITableView trong đó mỗi ô chứa UICollectionView.Không thể chọn khi UICollectionView được lồng trong UITableVIew

tôi có thể di chuyển các UITableView theo chiều dọc và di chuyển các lồng UICollectionView theo chiều ngang, tuy nhiên tôi không thể chọn một UICollectionViewCell trong UICollectionView.

Lựa chọn bị tắt trong UITableView và được bật (trạng thái mặc định) trong UICcollectionView.

UICollectionView'scollectionView:didSelectItemAtIndexPath: đơn giản là không bao giờ được gọi.

+0

Tập hợp UICollectionViewDelegate có được đặt không? – skladek

+0

Liệu ô trong chế độ xem bộ sưu tập có biểu hiện bất kỳ phản ứng chạm nào (như mờ hoặc giống như vậy) không? Có thể ô 'UITableView' đang hủy các lần nhấn của chế độ xem bộ sưu tập. –

+3

bạn có tìm thấy bản sửa lỗi cho John này không? –

Trả lời

-1

bản năng đầu tiên của tôi là bên nhận cử chỉ giữa hai quan điểm có thể mâu thuẫn

cụ thể hơn, UITableView GRS cho một vòi nước có thể được ngăn ngừa sự UICollectionView GRS từ nhận chạm

0

Con đường tôi đã có thể để giải quyết này là để thêm một recognizer tap cử chỉ để các tế bào để xử lý vòi nước bằng tay, chứ không phải dựa vào didSelectRowAtIndexPath mà không được gọi là:

Swift

let tapRecognizer = UITapGestureRecognizer(target: self, action: "cellTapped:") 
tapRecognizer.numberOfTapsRequired = 1 
cell.addGestureRecognizer(tapRecognizer) 

Objective-C

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellTapped:)]; 
tapRecognizer.numberOfTapsRequired = 1; 
[cell addGestureRecognizer:tapRecognizer]; 

Bây giờ bạn có thể xử lý các tế bào được khai thác trong phương pháp cellTapped:, và bạn có thể lấy tham chiếu đến ô đã được khai thác qua tapRecognizer.view.

-1

kiểm tra plz đầu tiên bạn đã cung cấp nguồn dữ liệu và đại biểu cần thiết. Sau đó, nếu bạn đang sử dụng chế độ xem bộ sưu tập trên số lượng ô xem bảng cụ thể, bạn có thể trực tiếp đưa vào ô mẫu thử. Vui lòng đảm bảo rằng ô của bạn có giới hạn phù hợp (chiều rộng)

-3

đây không phải là vấn đề! không cần bộ nhận dạng cử chỉ tùy chỉnh. không cần phải vô hiệu hóa lựa chọn của tableview.

hãy chắc chắn:

  1. thiết lập tableview của bạn trong kịch bản hoặc mã và thiết lập nguồn dữ liệu của nó và ủy
  2. trong cellForRowAtIndexPath sau dequeueing một tableviewcell có được một tham chiếu đến collectionview tương ứng và thiết lập của nó (collectionviews) nguồn dữ liệu và ủy quyền
  3. triển khai các bản xem trước bảng và bộ sưu tập các phương thức chọn lọc ủy quyền và đăng nhập cuộc gọi của họ để xem nó hoạt động

tôi chỉ cần thực hiện một dự án ví dụ nhỏ trước khi tôi viết câu trả lời đó để chắc chắn không có vấn đề gì. tôi có thể tải nó lên nếu nó vẫn không hoạt động cho bạn!

chúc may mắn!

0

Tôi chỉ làm việc này vì vậy tôi cho rằng tôi sẽ chia sẻ giải pháp của mình với các bạn.

Sau khi thiết lập các đại biểu cần thiết và datasources cho UITableView và lồng UICollectionView bạn có thể làm UICollectionView quan điểm lựa chọn đầu tiên của bạn như thế này

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ... 
    [tableViewCell bringSubviewToFront:tableViewCell.yourCollectionView]; 
    return cell; 
} 

này sẽ làm cho UICollectionView điều đầu tiên đó là lựa chọn thông qua đại biểu

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

Bất kỳ phần nào khác của chế độ xem sẽ được chọn bằng cách sử dụng UITableView ủy quyền

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

Hy vọng điều này sẽ hữu ích!

-1

Hãy thử tắt delaysContentTouches cho tableView và đảm bảo rằng delegate cho chế độ xem bộ sưu tập của bạn được đặt chính xác.

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