我有一个简单的表视图,它使用带有Subtitle样式的UITableViewController。我无法成功更新detailTextView字段。我已经在Stack Overflow上看到ios 8中存在潜在的错误,但没有一个建议的解决方法对我有用。当我打印字段的值时,我得到零。任何帮助,将不胜感激。下面是代码,后面是println语句的结果。我已经看到另一个SO条目列出了ios 8中的一个错误,但没有一个建议的解决方法对我有用。我也在Apple论坛上提出了这个问题
import UIKit
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "Test"
self.navigationItem.rightBarButtonItem = self.editButtonItem()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as!UITableViewCell
let xrow = indexPath.row
let xsection = indexPath.section
//if (xrow == 0) && (xsection == 0) {
// initializing with hard values initially
cell.textLabel?.text = "initial"
cell.detailTextLabel?.text = "Initial"
//}
println("row = \(xrow), section = \(xsection)")
println("0: cell.textLabel?.text = \(cell.textLabel?.text)")
cell.textLabel?.text = "Section = \(xsection)"
println("1: cell.textLabel?.text = \(cell.textLabel?.text)")
println("0: cell.detailTextLabel?.text = \(cell.detailTextLabel?.text)")
cell.detailTextLabel?.text = ("section = \(xsection), row = \(xrow)") as String!
println("1: cell.detailTextLabel?.text = \(cell.detailTextLabel?.text)")
return cell
}
}
row = 0, section = 0
0: cell.textLabel?.text = Optional("initial")
1: cell.textLabel?.text = Optional("Section = 0")
0: cell.detailTextLabel?.text = nil
1: cell.detailTextLabel?.text = nil
row = 1, section = 0
0: cell.textLabel?.text = Optional("initial")
1: cell.textLabel?.text = Optional("Section = 0")
0: cell.detailTextLabel?.text = nil
1: cell.detailTextLabel?.text = nil
row = 2, section = 0
0: cell.textLabel?.text = Optional("initial")
1: cell.textLabel?.text = Optional("Section = 0")
0: cell.detailTextLabel?.text = nil
1: cell.detailTextLabel?.text = nil
答案 0 :(得分:0)
因为detailTextLabel
总是返回nil
,所以如果单元格样式不支持。
UITableViewCell detailTextLabel reference
所以改变
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as!UITableViewCell
到
var cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier") as? UITableViewCell
if cell == nil{
cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "CellIdentifier")
}
答案 1 :(得分:0)
我很久没有使用默认单元格的detailTextLabel了。该领域的文档说:
detailTextLabel:保存单元格的二级(或细节)标签。 UITableViewCell在您创建单元格时添加适当的标签 支持二级标签的样式。如果风格不支持 细节标签,返回nil。请参阅UITableViewCellStyle 当前定义的单元格样式中主标签的描述。
您没有指定单元格样式。我猜测detailTextLabel是零。只记录detailTextLabel进行检查。