我有一个表视图控制器,其中声明了以下数组:
var newData = [String]()
在我的viewDidLoad函数中,我有以下内容:
newData = ["1", "2", "3"]
我试图在表格单元格内创建UILabel对象。到目前为止,我在cellForRowAtIndexPath函数中有以下内容:
let cell = tableView.dequeueReusableCellWithIdentifier("TableCell", forIndexPath: indexPath) as UITableViewCell
//Programmatically create label
var newLabel = UILabel(frame: CGRectMake(280.0, 14.0, 300.0, 30.0))
newLabel.tag = 1
newLabel.font = UIFont(name: "Avenir", size: 17.0)
newLabel.textColor = UIColor.darkGrayColor()
cell.addSubview(newLabel)
cell.contentView.viewWithTag(1) = newData[indexPath.row] //This is where I get the error
但是,我收到以下错误:"无法分配此表达式的结果"。在Objective-C中,我把它写成:
[(UILabel *)[cell.contentView viewWithTag:1] setText:[newData objectAtIndex:indexPath.row]];
我的问题是:如何在Swift中编写上一行代码?提前感谢您的回复。
答案 0 :(得分:0)
当您在此时创建标签分配文本时,最简单,最恰当的方式是分配文本
var newLabel = UILabel(frame: CGRectMake(280.0, 14.0, 300.0, 30.0))
newLabel.text = newData[indexPath.row]
newLabel.tag = 1
var newLabel = UILabel(frame: CGRect(x: 280.0, y: 14.0, width: 300.0, height: 30.0))
newLabel.text = newData[indexPath.row]
newLabel.tag = 1
即使你想使用viewWithTag方法,你也必须通过类型转换以这种方式使用它
var lbl : UILabel? = cell.contentView.viewWithTag(1) as? UILabel
lbl?.text = newData[indexPath.row]