2017-02-10 3 views
1

Я работаю над таким социальным приложением, как Instagram, с Firebase. Где пользователи делятся своими фотографиями на главном экране и в своем профиле. Моя проблема в том, когда user1 понравился запись User2picture2 в главного экрана и визиты пользователя User2 профилировать как значение для этого Picture2 все то же, пока клетка не будет перезагружена.tableView.reloadData() каждый раз появляется вид

Если я прокручиваю вниз и возвращаюсь к picture2 Ячейка перезагружается, и она будет иметь правильное значение. Потому что я использую didSet {} в моей ячейке, где выполняется выборка как значение. Но это плохой пользовательский опыт. Поэтому мое решение постоянно обновляло collectionViews.

Неужели это плохо для производительности или есть какие-либо другие проблемы?

Спасибо.

+0

Это плохо для производительности, вы можете только перезагрузить последнюю строку ... Проверьте это: [Обновить определенную строку UITableView на основе int в Swift] (http://stackoverflow.com/questions/ 28206492/refresh-sure-row-of-uitableview-based-on-int-in-swift) –

+0

Пожалуйста, поделитесь некоторым кодом и, если возможно, с фотоснимок проблемы –

+0

@ Xcoder123 это на самом деле не последняя строка. Они сортируются хронически и не могут сказать, где это соответствует на странице профиля, поэтому reloadRowsAtIndexPaths() не будет работать для меня, пока я не изменю свои методы, о которых я думаю. –

ответ

2

Вы можете сделать это, как показано ниже:

Objective C

NSArray *visibleCells = [_tblWhoAreYou visibleCells]; 
for (WhoRUSWCell *cell in visibleCells) { 
    NSIndexPath *indexPath = [_tblWhoAreYou indexPathForCell:cell]; 
    cell.imageStatus.image=[UIImage imageNamed:@"greenCircle.png"]; 
    [cell setNeedsLayout]; // OR you can reload particular cell 
} 

Swift 3,0

var visibleCells: [Any] = self.tblWhoAreYou.visibleCells 
for cell: WhoRUSWCell in visibleCells { 
    var indexPath: IndexPath? = self.tblWhoAreYou.indexPath(for: cell) 
    cell.imageStatus.image = UIImage(named: "greenCircle.png") 
    cell.setNeedsLayout() // OR you can reload particular cell 
} 

С помощью этого вы можете непосредственно обновить изображение непосредственно без перезагрузки. Вам просто нужно проверить свой тег или что-нибудь еще, чтобы найти выбранный объект, который вы хотите обновить.

+0

Можете ли вы дать мне дополнительную информацию об этом. Я начинаю заниматься разработкой, и я использую Swift. И фактический вопрос был, это плохая вещь, чтобы перезагрузить CollectionView каждый раз вид представления. Благодарю. –

+0

@UnalCelik, если вы это делаете, как мой ответ, тогда вы не хотите перезагружать collectionView каждый раз. Без перезагрузки вы можете обновить что-либо в своей ячейке. –

+0

Это работает как шарм ... Единственное, что не работало для меня, было setNeedsLayout(). Вместо этого я использовал collectionView.reloadItems (at: [indexPath]). Вы можете отредактировать его для других новичков :) Спасибо! –

Смежные вопросы