【发布时间】:2016-08-24 07:08:36
【问题描述】:
当我从 Web 服务获取数据时,我想动态更新/更改 UILabel 属性(背景颜色、背景形状等)。
我想通过不同的标签文本以不同的类型显示这个标签,根据从网络服务器获取的测试数据更新 UILabel 属性。像这样:如果 get testdata=[1,1,1,1] UIlabel 背景颜色是红色, testdata=[2,2,2,2] UILabel 背景颜色是蓝色.etc
我正在做以下事情:
在 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)
}
}
方法一:在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
Just One Cell testLabel 已更改,其余 Cell 无显示 testLabel
方法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 意味着我想通过不同的 Lable 文本以不同的类型显示它,我写过我想根据从 Web 服务器获得的测试数据更新 UILabel 属性。像这样:如果 get testdata=1 UIlabel 背景颜色为红色,testdata=2 UILabel 背景颜色为 blue.etc
标签: ios uitableview