我正在使用swift与XCode6构建iPhone应用程序。我遇到了一个问题,我添加到单元格的标签仅在选择单元格行时显示。当标签移动到单元格内容视图之外时(例如,导航栏),标签出现。无论是否选中该行,默认的textLabel都会显示正常。
这里有一个关于界面构建器+实际行为的屏幕截图的imgur。 http://imgur.com/a/5fO4H
定义自定义单元格类中的三个非静态标签的代码
@IBOutlet var posLabel: UILabel!
@IBOutlet var hrLabel: UILabel!
@IBOutlet var avgLabel: UILabel!
设置标签文字的代码
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as PlayerSelectTableViewCell
let name = playerNames[indexPath.row]
var hrs = Int(RosterStore.sharedInstance.get(name).stats["HR"]!)
var avg = RosterStore.sharedInstance.get(name).stats["AVG"]!
var avgString = "\(avg)" as NSString
cell.hrLabel!.text = "\(hrs)"
cell.posLabel!.text = RosterStore.sharedInstance.get(name).pos
cell.avgLabel!.text = avgString.substringFromIndex(1)
cell.textLabel!.text = name
println(cell.hrLabel.text)
return cell
}
请注意,我可以通过这种方式设置cell.textLabel并且它可以正常工作。如果有帮助,textLabel会突出显示为蓝色,而所有其他标签都会突出显示为绿色。
此处链接到github - https://github.com/klinskyc/OuttaHere 谢谢!
答案 0 :(得分:2)
好的,谢谢你在github上发帖。我现在被覆盖了。问题出在这个声明中:
cell.textLabel!.text = name
您正在调用一个大小不受控制的文本标签。突出显示时它具有透明度。而是将另一个UILabel添加到PlayerSelectTableViewCell
类。
代码:
import UIKit
class PlayerSelectTableViewCell: UITableViewCell {
@IBOutlet var posLabel: UILabel!
@IBOutlet var hrLabel: UILabel!
@IBOutlet var avgLabel: UILabel!
@IBOutlet weak var nameLabel: UILabel! //new code here
}
从该类中删除init和nib代码 - 不需要。
返回cellForRowAtIndexPath
功能:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as PlayerSelectTableViewCell
let name = playerNames[indexPath.row]
var hrs = Int(RosterStore.sharedInstance.get(name).stats["HR"]!)
var avg = RosterStore.sharedInstance.get(name).stats["AVG"]!
var avgString = "\(avg)" as NSString
cell.hrLabel!.text = "\(hrs)"
cell.posLabel!.text = RosterStore.sharedInstance.get(name).pos
cell.avgLabel!.text = avgString.substringFromIndex(1)
cell.nameLabel!.text = name //new code here
return cell
}