Swift UITableViewCell detailTextLabel.text 抛出错误“致命错误:无法打开 Optional.None”
Posted
技术标签:
【中文标题】Swift UITableViewCell detailTextLabel.text 抛出错误“致命错误:无法打开 Optional.None”【英文标题】:Swift UITableViewCell detailTextLabel.text throws error 'fatal error: Can't unwrap Optional.None' 【发布时间】:2014-06-12 17:18:03 【问题描述】:这是我生成表格视图的 Swift 代码。我正在尝试设置一个带有详细标签的 tableView。我认为问题的产生是因为
if (cell == nil)
println("1")
cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "CellSubtitle")
//cell = tableViewCell
永远不会被调用,因此单元格永远不会使用UITableViewCellStyle.Subtitle
样式初始化。这是该方法所需的代码:
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
println("start TableViewCellForRowAtIndexPath")
var cell: UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("CellSubtitle") as UITableViewCell
if (cell == nil)
println("1")
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "CellSubtitle")
//cell = tableViewCell
cell.textLabel.text = instructions[indexPath.row].text
println("2")
//cell.detailTextLabel
cell.detailTextLabel.text = "HI"
println("3")
这是该方法的控制台输出:
start load
1
2
done load
start TableViewCellForRowAtIndexPath
2
fatal error: Can't unwrap Optional.None
(lldb)
如何初始化detailTextLabel
以插入文本?当我尝试为标签设置文本时,我收到fatal error: Can't unwrap Optional.None
。为什么我会收到此错误?
单元格不是在故事板中创建的。我使用tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "CellSubtitle")
初始化了单元格或注册了它的类
【问题讨论】:
【参考方案1】:我假设您在情节提要中制作了自己的单元格,所以这就是为什么永远不会调用“if”子句的原因。您只需在情节提要的检查器中将单元格的样式更改为“字幕”(并删除该 if 子句)。
【讨论】:
我没有在故事板中制作单元格。我正在使用tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "CellSubtitle")
初始化单元格
@jbman223,使用该方法只会为您提供“基本”类型的单元格。只需删除该行,然后您的代码应该可以工作,因为初始出列将返回一个 nil 单元格,这将导致您的 if 子句被输入。
@jbman223,这行得通吗?仅当我将 dequeue 方法中的“as UITableViewCell”更改为“as UITableViewCell!”时,它才对我有用,否则我会收到错误消息。【参考方案2】:
根据我目前的经验,因为 detailTextLabel 是可选的,所以你必须这样输入:
cell.detailTextLabel?.text = "whatever"
但是,上面的人是对的,去掉 registerClass 行。我不使用那个,我还不确定它的用途。
【讨论】:
它对我有用。那是因为我使用了故事板,不应该需要 self.tableView.registerClass()。以上是关于Swift UITableViewCell detailTextLabel.text 抛出错误“致命错误:无法打开 Optional.None”的主要内容,如果未能解决你的问题,请参考以下文章
从另一个视图控制器单击 uitableviewcell 后,swift 3 更改 uitableviewcell?
第10月第1天 storyboard uitableviewcell
动态改变 UITableViewCell 高度 - Swift 4
UITableViewCell中的Swift ScrollView不滚动