2017-03-19 3 views
1

を変えているのと同じセルをクリックImageViewURLに、私は写真を入手あなたはセルをクリックし、placeholderImageは私がダウンして戻った後、上がると私はモデルを持っている写真が

て保存、転送され、 ImageViewの中にそれ、および

import Foundation 

import UIKit 

class Modal:NSObject { 

var name:String? 
var date:String? 
var ImageViewURL = "" 
var ImageView:UIImage? 
var stmp: Int? 
var id: String? 
var text:String? 

} 

あなたはセルをクリック

をダウンロードするためのコードは、placeholderImageは私がダウンして戻った後、上がると写真が変更されているのと同じセルをクリックし、転送され

Let u = URL (string: "link" + (modals [indexPath.row] .ImageViewURL)) 

cell.ImageView.sd_setImage (with: u, placeholderImage: UIImage (named: "loading")) 

self.modals [indexPath.row] .ImageView = cell.ImageView.image! 

質問は、細胞画像をインデックスパスで行のセルに更新されている

self.modals method [indexPath.row] .ImageView = cell.ImageView.image! Before loading placeholderImage 

すべてのコード

var modals = [Modal]() 
override func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return modals.count 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    if modals.count == 0 { 
     return UITableViewCell() 
    } 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell 

    cell.date?.text = modals[indexPath.row].date 
    cell.name?.text = modals[indexPath.row].name 

    let u = URL(string: "http://www.---.com" + (modals[indexPath.row].ImageViewURL)) 
    cell.ImageView.sd_setImage(with: u, placeholderImage: UIImage(named: "loading")) 
    self.modals[indexPath.row].ImageView = cell.ImageView.image! 


    return cell 

} 



override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    self.navigationController?.navigationBar.topItem?.title = "" 

    let vc = segue.destination as? ViewControllerDetail 

    vc?.detail = modals[(tableView.indexPathForSelectedRow?.row)!] 
} 

image1image 2

+0

インデックスパス方式のためのあなたの細胞はどのようなものが見えますか? –

+0

私はすべてのコード – programmer

+0

を追加しましたので、テーブルビュー上の問題がありますか?または 'Modal'オブジェクトを渡すときは? 2番目のビューコントローラにもテーブルビューがありますか? –

答えて

1

を実行する方法ですか?

表ビューは、細胞を再利用するために設計されています。セルが画面を離れると、画面に入るセルとして再利用されます。インデックスパスメソッドの行のセルは、セルが必要になるたびに呼び出されます。インデックスパスの行のセル内のイメージを更新しないと、「古い」イメージが表示されることがあります。

+0

の絵を送るということです次に、あなたは(おそらく)インデックスパスでの行のセル内の画像ビューの 'image'を設定する必要があります。 – programmer

+0

を更新されていないplaceholderimage –

+0

画像は、このコードを、 'self.modals [indexPath.row] .ImageView = cell.ImageView.imageなければ – programmer

0

だから、それはこの行のようになります。

self.modals[indexPath.row].ImageView = cell.ImageView.image! 

はおそらく犯人です。あなたがModalインスタンスを渡すと、あなたの詳細ビューの画像ビューを移入するために、そのImageViewプロパティを使用している場合は、それがウェブからロードされる前

、あなたがセルに現在の画像を取得することができます。

+0

をインストールし' アプリケーションのクラッシュを使用すると、セルをクリックしたとき!「致命的なエラー:オプションの値をアンラップしながら、予想外にnilを見つけ」 – programmer

関連する問題