2017-02-10 51 views
1

我正在使用Firebase等Instagram社交應用。用戶在主屏幕和他們的個人資料中共享他們的照片。我的問題是,當USER1喜歡user2的圖片2主屏幕來訪user2的天寒該圖片2類似值仍然是相同的,直到電池重新加載。tableView.reloadData()每次出現視圖時

如果我向下滾動並回到圖片2單元格正在重新加載,它會有正確的值。因爲我在我的單元格中使用了didSet {},在那裏獲取類似的值。但這是一個糟糕的用戶體驗。所以我的解決方案每次都重新加載collectionView。

這是一個壞的表現或有任何其他問題嗎?

感謝。

+0

這是一種壞的性能,你可能只想重新加載最後一行...檢查了這一點:[在Swift中刷新基於int的UITableView的某些行](http://stackoverflow.com/questions/ 28206492/refresh-certain-row-of-uitableview-based-on-int-in-swift) –

+0

請分享一些代碼,如果可能,比問題圖片分享 –

+0

@ Xcoder123它實際上不是最後一行。他們長期排序,並不能說它在配置文件頁面中的對應位置,所以reloadRowsAtIndexPaths()將不適用於我,直到我重新排列我認爲的方法。 –

回答

2

你可以像下面:

目標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 
} 

雨燕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])而不是那個。你可能想要編輯它爲其他新手:)謝謝! –