Webサービスからデータを取得するときに、UILabel属性(背景色、背景形状など)を動的に更新または変更したいと考えています。iOS SwiftカスタムUITableViewCellでUILabel属性を変更または更新する方法
このラベルを異なるLableテキストで差し替えたい、Webサーバーから取得したtestdataに従ってUILabel属性を更新します。 testdata = [1,1,1,1]の場合、UIlabelの背景色は赤です。testdata = [2,2,2,2] UILabelの背景色は青です。
私は次のことを行っています。 :Main.Stroyboardで
:
私はUITableViewCell
TVcell
という名前とUILabelコンポーネントを追加関連するテーブルビューとTableViewCell(選択肢カスタム)を追加します。
TVcellで
import UIKit
class TVCell: UITableViewCell {
@IBOutlet weak var testLabel: UILabel!
var testdata:TestDataInfo?{
didSet{
updateUI()
}
}
private func updateUI(){
if let mFildata=testdata{
setStautesLabel()
}
}
private func setStautesLabel(){
self.testLabel=UILabel(frame: CGRect(x: 50, y: 50, width: 100, height: 35))
self.testLabel.text = "thisTestLabel"
self.testLabel.transform = CGAffineTransformMakeRotation(0.2)
self.superview?.addSubview(self.testLabel)
}
}
Methodeの1:TableViewController
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let data = TestDataInfo![indexPath.row]
let cell = self.TV.dequeueReusableCellWithIdentifier(Storyboard.ProjectAppliedCellIndentifier,forIndexPath: indexPath)
if let filesDataCell = cell as? TVCell{
filesDataCell.testdata=data
}
return cell
}
結果1
でジャスト・ワン・セルtestLabelには表示testLabel変更し、残りの細胞なかったです
Methodeの2:TableViewController
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let data = TestDataInfo![indexPath.row]
let cell = self.TV.dequeueReusableCellWithIdentifier(Storyboard.ProjectAppliedCellIndentifier,forIndexPath: indexPath)
if let filesDataCell = cell as? TVCell{
filesDataCell.testdata=data
// update testLable In there
let testLable:UILabel=UILabel(frame: CGRect(x: 50, y: 50, width: 100, height: 35))
testLable.text = "thisLabel"
testLable.transform = CGAffineTransformMakeRotation(0.2)
cell.contentView.addSubview(testLable)
}
return cell
}
結果2
のすべてのセルにTestUILabelを表示することができます。 testLabelオリジナルを更新するだけで新しいUILabelを追加するだけです
なぜですか?私はTVCellのすべてのUILableを更新したいと思います。誰でも助けてくれますか?
updateUI meants異なるLableテキストで異なるタイプで表示したいのですが、私はWebサーバーから取得したtestdataに従ってUILabel属性を更新したいと書いています。 testdata = 1の場合、UIlabelの背景色は赤ですが、testdata = 2 UILabelの背景色は青です。 – RonnieLee