「Instagram」と同じUIのアプリを開発中です。instagram のように、ユーザーがスクロールして友達が追加した新しい写真を見るフィードウォールがあります。各 UITableViewcell には、1 つの画像と独自のセクション ヘッダー ビューがあります。各セルのセクションを作成することでこれを達成しました。でもメモリリークが気になる
これが私のコードです
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, 45))
headerView.tag = 101
let imageView :UIImageView = UIImageView(frame: UtilityManager.setFrameWithOutHeight(CGRectMake(22, 5 , 30, 30)))
imageView.backgroundColor = UIColor.blueColor()
imageView.tag = 101
imageView.layer.cornerRadius = 15.0
imageView.clipsToBounds = true
imageView.layer.borderWidth = 1
imageView.layer.borderColor = UIColor.grayColor().CGColor
headerView.addSubview(imageView)
var label = UILabel(frame: UtilityManager.setFrameWithOutHeight(CGRectMake(50, 5, 320 - 60 , 35)))
label.textAlignment = NSTextAlignment.Left
label.backgroundColor = UIColor.clearColor()
label.textColor = UIColor(red: 1, green: 0.28, blue: 0.27, alpha: 1)
label.text = "I'am a test label"
label.font = UIFont(name: Constants.FONT_MEDIUM, size: 12)
headerView.addSubview(imageView)
headerView.backgroundColor = UIColor.clearColor()
return headerView
}
ところで、私はSwiftを使用しています。とてもクールですね ;) . カスタム セクションのヘッダーを作成するデリゲート関数について詳しく説明します。セルまたはセクションのいずれかが画面に表示されるたびに、headerView が既に割り当てられているセクションにスクロールして戻っても、このデリゲート メソッドが呼び出されます。そのため、スクロール中に1つのセクションに対してheaderViewが複数回作成されています。しかし、私はそれが間違った方法であることを知っています。天気のheaderViewがすでに作成されているかどうかを確認するには、何かが必要です。私のビューがメモリに存在する場合、コードにチェックを入れる方法はありますか?メモリを再度割り当てる必要はありません。誰か助けてください:)。少しでもお役に立てれば幸いです。