我有一个带有自定义单元格和CustomCell类的表视图控制器。 VC中的代码如下所示:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Actual", for: indexPath as IndexPath) as! CustomCell
let mySeries = series[indexPath.row] as Series
cell.mySeries = mySeries
return cell
}
CustomClass代码如下:
class CustomCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var seasonLabel: UILabel!
@IBOutlet weak var episodeLabel: UILabel!
var mySeries: Series! {
didSet {
nameLabel.text = mySeries.name
seasonLabel.text = mySeries.season
episodeLabel.text = mySeries.episode
}
}
到目前为止一切正常。但我让细胞可编辑,重新排序的符号(三条纹)正在铺设在我的剧集标签上。所以我想在编辑完成之前隐藏这个标签。重新排序的编辑功能如下所示:
override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to toIndexPath:IndexPath) {
let customCell = CustomCell()
customCell.episodeLabel.isHidden = true
let rowToMove = series[fromIndexPath.row]
series.remove(at: fromIndexPath.row)
series.insert(rowToMove, at: toIndexPath.row)
}
这是正在运作的部分。但是当我创建一个CustomCell类的实例(customCell)并在上面的函数中插入这一行时,我得到一个致命错误,因为找到了nil:
customCell.episodeLabel.isHidden = true
当我在CustomCell类中创建函数hideEpisodeLabel()并从VC调用它时,行为相同。我做错了什么?
答案 0 :(得分:0)
您必须在moveRowAt
func
let customCell= tableView.cellForRowAtIndexPath(indexPath) as? SeriesCell
customCell.episodeLabel.isHidden = true
}
答案 1 :(得分:0)
此附加方法以所需方式隐藏标签:
override func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
let customCell = tableView.cellForRow(at: indexPath) as? CustomCell
customCell?.episodeLabel.isHidden = true
return true
}
要带回标签,我必须重新加载表格视图。这可以通过覆盖setEditing方法来完成:
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
if(!editing) {
tableView.reloadData()
}
}
现在,在'cellForRowAt indexPath:'方法中,我只需要将标签设置为:isHidden = false。