我使用下面的代码更改自定义uitableviewcell
的标签文字:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//NSArray *allsubviews = [[NSBundle mainBundle] loadNibNamed:@"LICustomUI" owner:nil options:nil];
//LIMerchantTableViewCell *cell = [allsubviews objectAtIndex:LIApplicationLayout() == LIApplicationDirectionRightToLeft ? 8 : 9];
let allSubViews = NSBundle.mainBundle().loadNibNamed("LICustomUI", owner: nil, options: nil)
var cell:LIInsuranceNameTableViewCell = allSubViews[11] as! LIInsuranceNameTableViewCell
cell.insuranceName.text = "Hello"
println(cell.insuranceName)
cell.insuranceName.backgroundColor = UIColor.redColor();
// cell.backgroundColor = UIColor.redColor();
return cell
}
println()
日志的结果是:
<UILabel: 0x7ad71930; frame = (0 11; 320 21); text = 'Hello'; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7ad71a10>>
但在设备(模拟器)中文本不会更改!
答案 0 :(得分:0)
如果您正在使用情节提要,请确保已将标签与insuranceName
插座相关联(如果您还没有,只需按控制 - 从标签拖到您在其中找到的插座助理检查员)。
另外,请使用println(cell.insuranceName.text)
,而不只是println(cell.insuranceName)
。
答案 1 :(得分:0)
从下面重构您的代码。 1.在viewDidLoad中注册nib 2. cellForRowAtIndexPath中的deque
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerNib( UINib(nibName:"nibName", bundle: nil), forCellReuseIdentifier: "identifier");
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let myTableCell = tableView.dequeueReusableCellWithIdentifier("identifier", forIndexPath: indexPath) as! UITableViewCell;
let subViews = myTableCell.contentView.subviews as! Array
if subViews.count > 0 {
if let myLabel = subViews[0] as! UILabel {
myLabel.text = "All good to go";
}
}
}