2011-11-30 19 views
5

Tôi có một trường hợp thiết kế lạ trong đó để triển khai thực hiện, tôi cần đặt hai UITableView trên cùng một chế độ xem. Tôi chỉ sử dụng các phần, nhưng tôi cần một chỉ mục trên bảng thứ hai.Cuộn hai UITableViews lại với nhau

Tôi muốn cả hai cuộn với nhau giống như thực tế là hai phần của cùng một chế độ xem bảng. Điều này có thể không?

Dưới đây là một mockup cơ bản minh họa tại sao:

mockup

Theo như tôi hiểu nó, bạn không thể di chuyển chỉ mục. Ngoài ra, khi bạn thêm một chỉ mục vào một bảng, nó sẽ xuất hiện trên toàn bộ xem bảng, không chỉ một phần.

Nếu tôi phải triển khai điều này dưới dạng hai chế độ xem bảng, cả hai đều cần cuộn như thể chúng là một. Nếu nó có thể làm điều này bằng cách sử dụng các phần, đó là tốt hơn.

+0

Hãy làm rõ những gì bạn có ý nghĩa bởi "chỉ số trên bảng thứ hai". Tôi không tin rằng một 'UITableView' sẽ không đáp ứng nhu cầu của bạn. – SundayMonday

+1

Bạn có thể làm cho câu hỏi của bạn cụ thể hơn về những gì bạn đang cố gắng làm không? Tôi chắc chắn chúng ta có thể tìm thấy một giải pháp đơn giản hơn chỉ sử dụng 1 'UITableView'! – Legolas

Trả lời

23

Cập nhật

Sau khi nhìn thấy cập nhật của bạn câu trả lời cũ của tôi không phải là rất tốt nhưng tôi sẽ để lại câu trả lời trước của tôi cho bất kỳ ai khác muốn nó.

Câu trả lời mới - Tùy thuộc vào cách bạn muốn đồng bộ hóa bảng.

Nếu bạn biết

  1. Những tế bào đang trong top 5
  2. Làm thế nào cao mỗi tế bào là
  3. Các bù đắp xem bảng

Sau đó, bạn có thể tính toán mà tế bào có thể nhìn thấy ở đầu bảng top 5. Bạn có thể sử dụng thông tin này để cuộn bảng dưới cùng đến chỉ mục chính xác.


Cũ câu trả lời

tôi với những kẻ khác không chắc chắn lý do tại sao bạn sẽ muốn hoặc nếu tôi hiểu sai nhưng nó khá đơn giản.

UITableView là một lớp con của UIScrollView vì vậy bạn có thể thiết lập cho mình như UITableViewDelegate và ghi đè

- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 
{ 
    UITableView *slaveTable = nil; 

    if (self.table1 == scrollView) { 
     slaveTable = self.table2; 
    } else if (self.table2 == scrollView) { 
     slaveTable = self.table1; 
    } 

    [slaveTable setContentOffset:scrollView.contentOffset]; 
} 

này mang lại cho tôi cái gì đó trông như thế này:

enter image description here

Đỉnh UITableViewself.table1 và phía dưới là self.table2 nếu một trong hai bảng được cuộn thì cuộn được nhân đôi trong bảng khác.

+0

Chắc chắn sẽ hoạt động, và đó thực sự là lựa chọn tốt nhất. – Macmade

+0

Nó hoạt động cho tôi để di chuyển kéo TableViews song song đặt để cuộn trong unison – Krishnan

+0

Nó hoạt động hoàn hảo! – xarly

1

Từ mô phỏng, có vẻ như điều này có thể được thực hiện với một đơn UITableView với hai phần.

Thay vì duy trì hai tableViews bạn có thể duy trì hai bộ sưu tập (một cho mỗi phần). Sau đó, trong cellForRowAtIndexPath, hãy chọn bộ sưu tập để sử dụng dựa trên phần được chỉ định trong indexPath.

+0

Chỉ mục sẽ xuất hiện trên cả hai phần, không chỉ phần thứ hai. – James

+0

Tôi không nghĩ rằng tôi hoàn toàn hiểu những gì bạn đang cố gắng làm. Hãy làm rõ với một ví dụ. – SundayMonday

+0

Tôi muốn có chỉ mục trên bảng, nhưng chỉ trong phần thứ hai. Như bây giờ, nếu tôi thêm một chỉ mục, nó sẽ xuất hiện ở đâu đó (trên toàn bộ bảng). Tôi chỉ muốn lập chỉ mục trên phần thứ hai. – James

0

trong nhanh chóng mã này:

func scrollViewDidScroll(scrollView: UIScrollView) { 
    if tb_time1 == scrollView { 
     tb_time2.contentOffset = tb_time1.contentOffset 
    }else if tb_time2 == scrollView { 
     tb_time1.contentOffset = tb_time2.contentOffset 
    } 
} 
Các vấn đề liên quan