2017-02-10 9 views
1

私はInstagramのようなソーシャルアプリ、Firebaseで作業しています。ユーザーがメイン画面とプロフィールで写真を共有する場所。 USER1User2の写真2のメイン画面と訪問user2の年代を言っていたときに私の問題はあるセルがリロードされるまではまだ同じであること写真2のためのような値をプロファイル。tableView.reloadData()everytime viewが表示されます

もし私が下にスクロールしてに戻ると、画像2のセルがリロードされていて、正しい値を持っています。私はセルの中でset {}を使っているので、値のような取り出しが行われます。しかし、それは悪いユーザー体験です。だから私のソリューションは毎回collectionViewsをリロードしていました。

パフォーマンスが悪いのですか、それとも他に問題がありますか?

ありがとうございました。

+0

パフォーマンスは悪いですが、最後の行だけをリロードすることができます。これをチェックしてください:[Swiftのintに基づいて特定の行のUITableViewをリフレッシュする](http://stackoverflow.com/questions/ 28206492/refresh-certain-row-of-intuit-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 
} 

スウィフト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])を代わりに使用しました。あなたは他の初心者のためにそれを編集したいかもしれません:)ありがとう! –

関連する問題