我在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)
}
.........
我做错了什么?
更新:
我已经拍摄了我目前的成就,并且我已经让细胞扩展,但是,正如你所看到的,现在还有另外两个标签的空间,但我该如何添加它们呢?
答案 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