2012-02-06 27 views
7

Tôi đang có 20 hàng trong chế độ xem bảng và tôi đã thiết kế UITableView (hoặc được thay đổi kích thước) ở một nửa màn hình (Sử dụng IB) và trong một nửa màn hình Tôi đang hiển thị những thứ liên quan đến UITableViewCell cụ thể. Những chi tiết của ô sẽ được hiển thị trong nửa màn hình được quyết định thời gian chạy. Tôi muốn ô hiển thị trong khi tải chế độ xem cho ô cuối cùng thứ hai.Làm cách nào để hiển thị UITableViewCell cụ thể trên màn hình khi có nhiều hàng hơn trong UITableView

Tôi làm cách nào để đạt được điều này?

Trả lời

11

UITableView lớp cung cấp:

-(void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath 
      atScrollPosition:(UITableViewScrollPosition)scrollPosition 
        animated:(BOOL)animated; 

mà có vẻ là những gì bạn đang tìm kiếm.

Đối tượng NSIndexPath có thể được xây dựng sử dụng:

+(NSIndexPath *)indexPathForRow:(NSInteger)row inSection:(NSInteger)section; 
7

Hãy thử scrollToRowAtIndexPath:atScrollPosition:animated::

NSUInteger indexArray[] = {1,15}; 
NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:indexArr length:2]; 
[yourTableView scrollToRowAtIndexPath:indexPath atScrollPosition: UITableViewScrollPositionTop animated:YES]; 
+0

Nhờ sự giúp đỡ ..., – Krishna

15

tôi thấy cách dễ nhất để đảm bảo rằng một tế bào hoàn toàn có thể nhìn thấy được hỏi tableview để đảm bảo rằng trực tràng cho ô hiển thị:

[tableView scrollRectToVisible:[tableView rectForRowAtIndexPath:indexPath] animated:YES]; 

Một cách dễ dàng cách để kiểm tra nó chỉ là để đưa vào -(void)tableView:didSelectRowAtIndexPath: - khai thác bất kỳ tế bào sau đó sẽ di chuyển nó vào vị trí nếu nó bị ẩn một phần.

+2

Đây chỉ là những gì tôi đang tìm kiếm. Một báo trước mặc dù ... Nếu bạn có chiều cao ô động (ví dụ: thay đổi độ cao bên trong didSelectRowAtIndexPath), bạn sẽ cần thêm phần đệm ở cuối bảng. –

+0

Thực tế nó có vẻ hoạt động tốt hơn nhiều so với phương pháp thực tế để cuộn đến đường dẫn chỉ mục –

1

Swift 4 phiên bản của câu trả lời Nico teWinkel, mà làm việc tốt nhất cho tôi:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     tableView.scrollToRow(at: indexPath, at: .middle, animated: true) //scrolls cell to middle of screen 
} 
Các vấn đề liên quan