2011-08-12 4 views
22

Tôi có một UITableView. Tôi muốn cập nhật dữ liệu bảng dựa trên lựa chọn được thực hiện. Ngay bây giờ tôi sử dụng [mytable reloadData]; Tôi muốn biết nếu có bất kỳ cách nào mà tôi chỉ có thể cập nhật các tế bào cụ thể được chọn. Tôi có thể sửa đổi bằng cách sử dụng NSIndexPath hoặc những người khác không? Bất kỳ đề xuất?Tải lại ô UITableView cụ thể trong iOS

Cảm ơn.

Trả lời

62

Đối với iOS 3.0 trở lên, bạn chỉ cần gọi:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; 

Để tải lại hàng 3 của phần 2 và hàng 4 của phần 3 chẳng hạn, bạn sẽ phải làm điều này:

// Build the two index paths 
NSIndexPath* indexPath1 = [NSIndexPath indexPathForRow:3 inSection:2]; 
NSIndexPath* indexPath2 = [NSIndexPath indexPathForRow:4 inSection:3]; 
// Add them in an index path array 
NSArray* indexArray = [NSArray arrayWithObjects:indexPath1, indexPath2, nil]; 
// Launch reload for the two index path 
[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade]; 
+0

Tôi không quen với đường dẫn chỉ mục. Bạn có thể vui lòng cho tôi biết chi tiết không. – pa12

+1

NSIndexPath như tên cho thấy giữ một chỉ mục. Một chỉ mục được tạo thành từ 2 thành phần và hàng. Bạn có thể tạo một với [NSIndexPath indexPathForRow: (NSUInteger) inSection: (NSUInteger)]; – Abhinit

+0

Mỗi phần có thể có nhiều hàng. Trong máy nghe nhạc MP3 iPod ví dụ bạn có một phần cho mỗi chữ cái. Mỗi phần này chứa một số nghệ sĩ. Tôi đã chỉnh sửa mã gốc để chỉ cho bạn cách thực hiện. – CedricSoubrie

2

Tôi nghĩ rằng bạn đang tìm kiếm phương pháp này UITableView:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 
6

Bạn cũng có thể tham khảo Đối tượng UITableViewCell và thay đổi nhãn của nó, v.v.

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
cell.textLabel.text = @"Hey, I've changed!";