Nếu bạn đang sử dụng TableViewCells tùy chỉnh, chung chung
[self.tableView reloadData];
không trả lời hiệu quả câu hỏi này trừ khi bạn rời khỏi chế độ xem hiện tại và quay lại. Không có câu trả lời đầu tiên.
Để tải lại thành công ô xem bảng đầu tiên của bạn mà không chuyển đổi chế độ xem , hãy sử dụng mã sau:
//For iOS 5 and later
- (void)reloadTopCell {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
NSArray *indexPaths = [[NSArray alloc] initWithObjects:indexPath, nil];
[self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
}
Chèn phương thức làm mới sau đây gọi đến phương thức trên để bạn có thể tùy chỉnh chỉ tải lại ô trên cùng (hoặc toàn bộ chế độ xem bảng nếu bạn muốn):
- (void)refresh:(UIRefreshControl *)refreshControl {
//call to the method which will perform the function
[self reloadTopCell];
//finish refreshing
[refreshControl endRefreshing];
}
Bây giờ bạn đã sắp xếp nó, bên trong bạn viewDidLoad
thêm vào như sau:
//refresh table view
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:refreshControl];
Bây giờ bạn có một tính năng bảng làm mới tùy chỉnh sẽ tải lại ô trên cùng. Để tải lại toàn bộ bảng, thêm
[self.tableView reloadData];
để phương pháp làm mới mới của bạn.
Nếu bạn muốn tải lại dữ liệu mỗi khi bạn chuyển chế độ xem, hãy triển khai phương thức:
//ensure that it reloads the table view data when switching to this view
- (void) viewWillAppear:(BOOL)animated {
[self.tableView reloadData];
}
[NSArray arrayWithObject:]
thay thế.