2011-11-30 27 views
9

Hãy tưởng tượng, có một UIViewController với một UIScrollView trong đó. Ở phía trên cùng của khung nhìn có một UIImageView, một số UILabels và những thứ khác. Hơn nữa, có một UITableView có nội dung là Prototypes động. Tôi đính kèm một bức tranh để làm cho nó rõ ràng:UITableView trong một UIScrollView - Làm thế nào để làm cho xem cuộn, nhưng không phải là TableView trong chính nó?

enter image description here

tôi đã không nhận được một lượng tĩnh của các tế bào trong UITableView nên nó có thể được cuộn. Vấn đề của tôi là sau đây: các UITableView cuộn trong chính nó nhưng tôi muốn di chuyển toàn bộ xem. Khả năng tốt nhất để làm điều đó là gì?


giải pháp có thể tôi đã thành lập hiện nay

1) Việc đầu tiên là: Tôi tạo ra một UITableViewController và khai báo một phần tiêu đề trong đó tôi bao gồm tất cả các nhãn của tôi, hình ảnh vv lập trình (Tôi rất thích để sử dụng trình tạo giao diện cho điều đó ...)

2) Một giải pháp khác là tính chiều cao của chế độ xem. Tôi đã cố gắng hết sức để làm điều đó theo cách này - nhưng: không thành công. Nếu đây là cách tốt nhất để làm điều đó: Ai có thể đưa ra một ví dụ?

Trả lời

19

Tôi sẽ bỏ số UIScrollView và chỉ sử dụng UITableView. Bạn có thể thêm đối tượng UIView làm tableHeaderView của số UITableView chỉ bằng cách kéo đối tượng trong Trình tạo giao diện. Bây giờ vì mọi thứ là một phần của hệ thống phân cấp UITableView, mọi thứ sẽ cuộn lại với nhau như mong đợi.

+0

Cảm ơn bạn rất nhiều! Bạn làm cho ngày của tôi - nó giống như một món quà Giáng sinh ưa thích; o) –

+1

/chạm ngón tay vào mũi và tên lửa lên ống khói của SO –

+0

Cho bạn một câu trả lời rất tốt, rất tốt. Tốt hơn tôi. :) –

1

Bạn sẽ phải (như bạn đã đề cập) thêm UIView chứa hình ảnh và nút vào thực tế UITableView. Nhúng vào chế độ xem cuộn sẽ tạo ra hành vi không mong muốn mà bạn đang thấy.

Tôi khuyên bạn nên quay lại UIView làm chế độ xem tiêu đề cho phần đầu tiên của chế độ xem bảng. Bạn có thể làm điều này bằng cách thực hiện phương pháp UITableViewDelegate:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; 

Nếu bạn duy trì một IBOutlet đến xem có chứa hình ảnh của bạn/nhãn, bạn có thể trở lại nó ở đây.

+0

Cảm ơn bạn đã trả lời. Nếu tôi làm như vậy, tôi phải thực hiện tất cả các hình ảnh/nhãn theo lập trình, phải không? Tôi muốn tránh điều đó ... –

+0

Không, bạn vẫn có thể sử dụng Trình tạo giao diện, miễn là 'UIView' chứa hình ảnh/nhãn của bạn được định nghĩa là' IBOutlet' trên 'UITableViewDelegate'. –

+0

à, được rồi! Bây giờ tôi hiểu ý bạn là gì. Your're đúng! Một giải pháp tuyệt vời, cảm ơn bạn vì điều đó :-) –

2

Bạn cũng có thể thử đặt delaysContentTouches thành NO trên số scrollView của mình. Tùy thuộc vào thiết lập của bạn, điều này có thể làm cho chế độ xem cuộn phản ứng với lần chạm đầu tiên thay vì chế độ xem bảng.

Từ Táo UIScrollView Docs:

delaysContentTouches

Một giá trị Boolean xác định liệu xem di chuyển chậm trễ trong việc xử lý của các cử chỉ cảm ứng xuống.

@property(nonatomic) BOOL delaysContentTouches

Thảo luận

Nếu giá trị của thuộc tính này là YES, xem di chuyển chậm trễ xử lý cử chỉ cảm ứng xuống cho đến khi nó có thể xác định nếu di chuyển là ý định.Nếu giá trị là NO, chế độ xem cuộn ngay lập tức gọi touchesShouldBegin:withEvent:inContentView:. Giá trị mặc định là YES.

+0

Tôi cũng sẽ thử điều này - có vẻ là một giải pháp tuyệt vời khác. Cảm ơn :-) –

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