在UITableViewCell中以编程方式添加标签?

时间:2016-08-26 17:03:33

标签: ios swift uitableview

我在tableview中的某些单元格上添加额外标签时遇到问题。目前我确定rowheight如下:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        let numberOfBusses = nearbyStops[indexPath.section].getDepartures()[indexPath.row]!.count
        if (numberOfBusses > 2) {
            return CGFloat((75/2) * numberOfBusses)
        } else {
            return 75
        }
}

我尝试这样做以添加缺少的标签,但没有任何反应:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! BusDepartureTableViewCell
    let numberOfBusses = nearbyStops[indexPath.section].getDepartures()[indexPath.row]!.count
            if (numberOfBusses > 2) {
                var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
                label.center = CGPointMake(160, 284)
                label.textAlignment = NSTextAlignment.Center
                label.text = "I'am a test label"
                label.textColor = UIColor.redColor()
                cell.foregroundView.addSubview(label)
            }


.........

我做错了什么?

更新:

我已经拍摄了我目前的成就,并且我已经让细胞扩展,但是,正如你所看到的,现在还有另外两个标签的空间,但我该如何添加它们呢?

enter image description here

1 个答案:

答案 0 :(得分:0)

细胞得到重新使用" - 这意味着节省内存iOS仅将UI元素用作占位符,并在

中设置值
cellForRowAtIndexPath

在这种情况下,在Storyboard中创建2个(或更多)不同的单元格布局会更有效,并为每个单元格提供不同的标识符。

例如:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let item = yourPopulatingArray[indexPath.row] as Item

    var cellIdentifier = "cellLayout1"

    if item.anyPropertyToCheckforLayout {
       cellIdentifier = "cellLayout2"
    } 

    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! BusDepartureTableViewCell