当我选择单元格时,我在数组中打印位置,并在控制台中正确打印,但是当我尝试将字体更改为粗体以指示单元格被选中时,没有任何更改。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell: cellsort = table.dequeueReusableCellWithIdentifier("cell") as! cellsort
cell.type.font = UIFont(name: "System-Bold", size: 17)
cell.typeselected.hidden = false
print("selected")
print(sort[indexPath.row])
}
答案 0 :(得分:3)
因为您要更改UITableViewCell
的其他实例上的字体,而不是所选的实例。
您应该只在数据源方法dequeue...
中使用-tableView: cellForRowAtIndexPath:
。该方法用于按需配置新单元(基于您的数据模型),并将其传递给表视图以供显示。
相反,请使用UITableView的方法:cellForRowAtIndexPath:
(不要混淆数据源方法!)。它为您提供屏幕上的实际单元格,如果相应的行在屏幕外,则为nil。资料来源:Apple's documentation。
编辑:我通过添加一些错误检查使代码更安全。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell: CellSort = table.cellForRowAtIndexPath(indexPath) as! CellSort
// ^ Capitalize your class names!!!
if let cell = table.cellForRowAtIndexPath(indexPath) as? CellSort {
// Success
cell.type.font = UIFont(name: "System-Bold", size: 17)
cell.typeselected.hidden = false
print("selected")
print(sort[indexPath.row])
}
else{
// Error; Either:
// A) Cell was not found at the specified index
// path (method returned nil), or
//
// B) The returned cell (UITableViewCell) could
// not be cast to your custom subclass (CellSort).
//
// Neither should happen, if you register your cell classes
// correctly and call the above method on the same index path
// that was selected.
}
}