2017-10-06 16 views
-1

私はUITableViewを使ってデータを表示しています。私はUITableViewをスクロールしているときに画像が消える

私のデータは画像とテキストで構成されています。問題は、私が画像が消えるUITableViewをスクロールしているときです。

これは私のコードです:UITableView

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! collCell 
    let msg = msgs[indexPath.row] 
    var decodeImgURL = "" 
    cell.lbl1.text = msg.content 

    decodeImgURL = msg.imgurl 

    if decodeImgURL == "none" { 
     cell.img.isHidden = true 
    } else { 

     let dataDecoded : Data = Data(base64Encoded:decodeImgURL,options: .ignoreUnknownCharacters)! 
     let decodedImage = UIImage(data: dataDecoded) 
     cell.img.image = decodedImage 

    } 

    return cell 
} 

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    let msg = msgs[indexPath.row] 

    if msg.imgurl == "none" { 
     return 64 
    } else { 
     return 207 
    } 

} 
+0

'lbl1'への' msg.content'も消えていますか? – thedjnivek

+0

あなたの画像は最初の場所に表示されますか? –

+0

@thedjnivekいいえlbl1は同じままです –

答えて

0

、メモリ内にある細胞のみが見える細胞です。テーブルセルを画面外にスクロールすると、メモリから削除されます。これは、テーブルビューのスクロールを速くするのに役立ちますあなたが直面している問題は、画面からテーブルセルをスクロールすると、(画像とともに)セルがメモリから割り当て解除されるということです。画面上にセルをスクロールすると、再びメモリに割り当てられます。あなたの問題は、次の2つの問題のいずれかである可能性があります。

1)画像をセル内で再作成するまで待つだけです。

2)おそらくあなたのmsgs配列に問題があります。数秒後に画像が表示されない場合は、この行の直後にブレークポイントを設定してください:cell.img.image = decodedImage。画面からセルをスクロールしてから画面に戻った後にブレークポイントに達しない場合、問題はdecodeImgURL(画像のURL)が間違っていることです。

+0

私は 'cell.img.image = decodeImage'にブレークポイントを置いてしまいましたyaaスクロールするときにセクション全体が呼び出されますが、設定されていません私のイメージ –

関連する問題