我想從Web服務獲取數據時動態更新/更改UILabel屬性(背景顏色,背景形狀等)。iOS Swift如何更改或更新自定義UITableViewCell中的UILabel屬性
我想通過不同的Lable文本顯示不同類型的Label,根據從Web服務器獲得的測試數據更新UILabel屬性。像這樣:if get testdata = [1,1,1,1] UIlabel背景色爲紅色,testdata = [2,2,2,2] UILabel背景色爲藍色等。
我在做以下:
在Main.Stroyboard:
我想補充的TableView和相關TableViewCell(選擇自定義)UITableViewCell
命名TVcell
並添加一個UILabel組件。
在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我想通過不同的標籤文本顯示差異類型,我寫了我想要更新UILabel屬性根據從Web服務器獲得的testdata。像那樣:if get testdata = 1 UIlabel背景顏色是紅色的,testdata = 2 UILabel背景顏色是blue.etc – RonnieLee