Swift:在表视图单元格中创建UILabel

时间:2014-11-09 02:18:28

标签: ios arrays uitableview swift uilabel

我有一个表视图控制器,其中声明了以下数组:

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中编写上一行代码?提前感谢您的回复。

1 个答案:

答案 0 :(得分:0)

当您在此时创建标签分配文本时,最简单,最恰当的方式是分配文本

var newLabel = UILabel(frame: CGRectMake(280.0, 14.0, 300.0, 30.0))
newLabel.text = newData[indexPath.row]
newLabel.tag = 1

Swift 3

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]