Ответ 1
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
Используйте этот
Возможный дубликат:
Возможно ли обновить один UITableViewCell в UITableView?
В последовательности я обновляю только определенный объект в своих данных списка (NSMUtableArray), после обновления его значения. Чтобы сделать обновление GUI, я перезагрузил полную таблицу, как показано ниже...
[table reloadData];
Он работал нормально, но в точке эффективности он немного висит, пока я прокручиваю, есть ли способ обновить только конкретную ячейку без перезагрузки полной таблицы?
спасибо.
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
Используйте этот
Вы можете использовать это.
NSArray *indexPathArray = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]];
//You can add one or more indexPath in this array...
[tblview reloadRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationFade];
Вы можете перезагрузить определенную строку изображения с помощью указательного пути.
[mainTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
Как вы делаете обновление GUI, лучше использовать reloadData, а затем использовать любые другие методы. reloadData - лучший способ в вашем случае обновить UITableView
, поскольку он избегает несогласованности. Другая вещь, которую вы можете сделать, - добавить условие в свой cellForRowAtIndexPath
, и выполнить выполнение только для измененной ячейки.
Вы можете получить объект ячейки с помощью
UITableViewCell *cell = [table cellForRowAtIndexPath:indexPath];
теперь изменить свои связанные значения в соответствии с вашим объектом из массива данных. Он должен отразиться в таблице. Надеюсь, это поможет.
Если вы просто добавляете один элемент и хотите добавить его в таблицу, вы можете вручную вставить его в свой UITableView, вот пример:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_directions.count-1 inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:YES];