2008-11-21 16 views
16

Tôi muốn đặt lại hoàn toàn vị trí cuộn của UITableView, để mỗi khi tôi mở nó, nó sẽ hiển thị các mục trên cùng. Nói cách khác, tôi muốn cuộn chế độ xem bảng lên đầu mỗi lần mở.Cách đặt lại vị trí cuộn của UITableView?

tôi đã cố gắng sử dụng đoạn mã sau đây, nhưng có vẻ như tôi hiểu lầm tài liệu:

- (void)viewWillAppear:(BOOL)animated { 
    [tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionTop animated:NO]; 
} 

Đây có phải là cách tiếp cận sai ở đây?

Trả lời

33

Tháng 8 có phương pháp UITableView cụ thể. Một cách khác để làm điều đó là:

[tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO]; 

Phương pháp này được định nghĩa trong UIScrollView, lớp cha mẹ thành UITableView. Ví dụ trên cho biết để cuộn đến hộp 1x1 ở góc trên cùng bên trái, nói cách khác.

+1

Đây thực sự là một cách khá gọn gàng để làm điều đó bởi vì bạn không cần phải lo lắng về việc liệu bảng của bạn có trống hay không. Tôi đã có một vụ tai nạn khó chịu sẽ NSIndexPath (0,0) khi không có hồ sơ để hiển thị. –

+0

Cảm ơn bạn !!! Mẹo tuyệt vời! – quantum

6

Phương pháp bạn đang sử dụng cuộn đến (như tên phương pháp ngụ ý) hàng được chọn gần nhất. Trong nhiều trường hợp, đây sẽ không phải là hàng đầu. Thay vào đó, bạn muốn sử dụng một trong hai

scrollToRowAtIndexPath:atScrollPosition:animated: 

hoặc

selectRowAtIndexPath:animated:scrollPosition: 

nơi bạn sử dụng đường dẫn chỉ số hàng bạn muốn di chuyển đến. Phương thức thứ hai thực sự chọn một hàng, phương thức đầu tiên chỉ đơn giản là cuộn đến nó.

+0

Các tính năng này không hoạt động đối với tôi với iOS 4.0 khi bắt đầu chuỗi hoạt ảnh. Tôi đã phải sử dụng scrollRectToVisible: hoạt hình: – chrish