Если вы используете пользовательские 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:]
вместо нее .