2014-10-02 28 views
11

Tôi sẽ thực hiện một lần xem bảng với 2 phần bên trong nó. Tôi có thể thêm các tế bào để mỗi phần lập trình và khi tôi thêm, tôi di chuyển đến cuối tableview sử dụngiOS UITableView Cuộn xuống cuối phần

[_tableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)]; 

Câu hỏi của tôi là làm thế nào tôi có thể di chuyển đến cuối của phần 0, do đó khi sử dụng thêm một phần tử thành phần 0, xem bảng động theo thứ tự động đến ô cuối cùng trong phần 0.

cảm ơn.

Trả lời

22

Bạn có thể thử với mã này:

int yourSection = 2; 
int lastRow = [tableView numberOfRowsInSection:yourSection] - 1; 
[tableView scrollToRowAtIndexPath:[NSIndexPath lastRow inSection:yourSection] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 

Bạn nhận được số lượng hàng trong phần của bạn, sau đó di chuyển đến indexPath đó.

+0

Cảm ơn, nó hoạt động như một nét duyên dáng –

+0

Điều này wil l cung cấp cho bạn một chỉ mục ngoài giới hạn về số hàng đó. Bạn cần phải trừ 1 – Moriya

+1

Luôn nhớ kiểm tra xem phần đó có tồn tại và có nhiều hơn số hàng đó hay không, hoặc nó sẽ sụp đổ .. – Benetz

4

khi bạn chèn hàng ở cuối con đường bạn có chỉ số của nó, bạn có thể sử dụng phương pháp scrollToIndexPath của tableview để di chuyển

[self.liveChannelsTable scrollToRowAtIndexPath:IndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
+1

Cảm ơn, nó cũng hoạt động –

15

Tất cả những gợi ý trên là đúng, ít nhất là dựa trên các tài liệu. Nhưng nó không hoạt động trong trường hợp của tôi - tôi không thể lấy được cuộn để hiển thị hàng cuối cùng trong khung nhìn bảng. Tôi đã phải thêm một sự chậm trễ trong cuộn để làm cho công việc đó.

- (void)scrollToTheBottom:(BOOL)animated 
{ 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowCount-1 inSection:0]; 
    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:animated]; 
} 

tôi gọi là ở trên như:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
      [self scrollToTheBottom:YES]; 
}); 
+0

Cảm ơn bạn. Tôi đã có rất nhiều tính toán trong một phần của tôi và không có giải pháp cuộn sẽ làm việc ngoại trừ một trong những điều này. – wheeliez

+0

Cảm ơn bạn. Giải pháp này khắc phục sự cố của ô cuối cùng không hiển thị khi bạn cuộn đến ô cuối cùng. –

+0

Thnks a Lot cho điều này, tôi cố gắng rất nhiều nhưng không thể làm việc bất kỳ mã nhưng mã của bạn đang làm việc cho tôi thnks một lần nữa .. –

2

Chỉ trong trường hợp, đây là giải pháp trong Swift:

extension UITableView { 
    func scrollToBottom(animated: Bool = true) { 
     let sections = self.numberOfSections 
     let rows = self.numberOfRowsInSection(sections - 1) 
     self.scrollToRowAtIndexPath(NSIndexPath(forRow: rows - 1, inSection: sections - 1), atScrollPosition: .Bottom, animated: true) 
    } 
} 
1

Trong Swift 3 nó được cập nhật thành:

let indexPath = IndexPath(row: self.numberOfRowsInSection(0) - 1), section: 0) 
self.commentsTableView.scrollToRow(at: indexPath, at: .bottom, animated: false) 
Các vấn đề liên quan