Якщо ви використовуєте власні TableViewCells, загальні
[self.tableView reloadData];
не дає ефективної відповіді на це питання, якщо ви не залишите поточний погляд і не повернетесь назад. Ні перша відповідь не дає.
Для успішного перезавантаження першої комірки подання таблиці без перемикання поглядів використовуйте наступний код:
//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];
}
Вставте наступний метод оновлення, який викликає вищевказаний метод, щоб ви могли користувальницьку перезавантажувати лише верхню клітинку (або все подання таблиці, якщо бажаєте):
- (void)refresh:(UIRefreshControl *)refreshControl {
//call to the method which will perform the function
[self reloadTopCell];
//finish refreshing
[refreshControl endRefreshing];
}
Тепер, коли ви їх відсортували, всередині viewDidLoad
додайте наступне:
//refresh table view
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:refreshControl];
Тепер у вас є спеціальна функція таблиці оновлення, яка перезавантажить верхню комірку. Щоб перезавантажити всю таблицю, додайте
[self.tableView reloadData];
до вашого нового методу оновлення.
Якщо ви хочете перезавантажувати дані щоразу, коли перемикаєте представлення даних, застосуйте метод:
//ensure that it reloads the table view data when switching to this view
- (void) viewWillAppear:(BOOL)animated {
[self.tableView reloadData];
}
[NSArray arrayWithObject:]
замість цього.