2017-03-28 2 views
1


私はUITableViewを含むSwift 3でアプリケーションを作成しています。私はテーブルビューのセルを実際に作成しています。私が経験している問題は、セルのラベルテキストが.reloadData()関数の後で永続的であるということです。使用前にセルからすべての要素と書式をクリアする機能はありますか?私はコードを介してUILabelをインスタンス化しており、反復を介してアクセスすることはできません。残念ながら、私はすでにプログラムでテーブルを作成するのに時間を割いていますので、できるだけ戻ってセルクラスを作るのを避けたいと思います。

私は機能を使用するには、このような何か計画しています:再利用の前にUITableViewCellからプログラムで作成した要素をクリアする方法

var label: UILabel 
       if reloadCount > 0 { 
        //clear all formatting from the cell 
       } 

        label = UILabel(frame: CGRect(x: 30, y: 0, width: self.screenWidth - 100, height: 50)) 
        label.textAlignment = .center 
        label.lineBreakMode = NSLineBreakMode.byWordWrapping 
        label.textColor = UIColor(red: 127.0/255, green: 140.0/255, blue: 142.0/255, alpha: 1.0) 
        label.font = UIFont(name: "Tahoma", size: CGFloat(22)) 
        label.numberOfLines = 0 
        label.tag = Int(self.thoughtFeed[indexPath.row].dbId!)! 
        label.text = thoughtFeed[indexPath.row].thoughtText!.fromBase64() 
        label.isUserInteractionEnabled = true 
        label.addGestureRecognizer(labelTap) 
        cell.addSubview(label) 

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

+0

どのようにあなたのtableViewに読み込まれるデータを格納していますか?あなたの 'UITableViewDataSource'コードのいくつかを見せてください。 – toddg

+0

あなたの配列をクリアする –

+0

このコードを 'cellForRowAt'で実行する予定ですか? – DonMag

答えて

1

UILabelを何らかの形で「覚えている」ことを再確認してください。 UITableViewCellをサブクラス化したくないと言うので、タグを使ってラベルへの参照を得ることができます。あなたのcellForRowAtIndexPathでこのようなことをしてください:

if let label = cell.viewWithTag(42) as? UILabel { 
    // now you have a reference to the existing label. 
    // Just update the text (or whatever you need to do) 
} else { 
    label = UILabel(frame: CGRect(x: 30, y: 0, width: self.screenWidth - 100, height: 50)) 

    // add a tag so we can remember it when we dequeue a cell later 
    label.tag = 42 
    cell.addSubview(label)  
} 
+0

ありがとうございました。私は少しこれを試してみましょう、あなたはそれがどのように働いていたか教えてください。 – iamnickpitoniak

+0

@iamnickpitoniak any luck? – toddg

+0

はい、ありがとうございます。 – iamnickpitoniak

関連する問題