为什么我的UILabel没有?

时间:2016-05-24 23:56:54

标签: ios swift uilabel

我有一个从表格单元格中的三个UILabel链接到一个自定义类,这是一个与我的VC(视图控制器)不同的文件。 listOfTasks是一个里面有元组的字典。这是相关代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("MyCustomTableViewCell", forIndexPath: indexPath) as! MyCustomTableViewCell

    let (name,description,date) = listOfTasks[indexPath.row]
    cell.title.text = name //Here I get the error: "fatal error: unexpectedly found nil while unwrapping an Optional value"
    cell.subtitle.text = description
    cell.date.text = date

    return cell
}

为什么它会给我这个错误?

我已经检查了我的连接。

P.S。对于认为这是this的副本的人来说,该问题的答案并不能解决我的问题。

编辑:MyCustomTableViewCell的代码:

import UIKit

class MyCustomTableViewCell: UITableViewCell {
    @IBOutlet weak var title: UILabel!
    @IBOutlet weak var subtitle: UILabel!
    @IBOutlet weak var date: UILabel!
}

变量:

cell.titlenil

cell.subtitlenil

cell.datenil

编辑2:FirstViewController

的屏幕截图

enter image description here

编辑3:<罢工>也许我没有彻底检查我的连接。圆圈在课堂上是空的是正常的吗? 参见编辑7。

编辑4:无论何时我尝试为其分配.text值,我都会收到相同的错误。我尝试在我链接的课程中这样做;同样的错误。

编辑5:我似乎没有弱连接的事实;强者仍然给我错误。

enter image description here

编辑6:我uploaded my project files to GitHub对任何有兴趣看他们的人。{/ p>

编辑7:管理以使@IBOutlet正常工作。

4 个答案:

答案 0 :(得分:1)

我认为你应该删除下面的代码:

self.tableView.registerClass(TableViewCell.self, forCellReuseIdentifier: "Cell")

答案 1 :(得分:1)

    In `MyCustomTableViewCell`,you can change your label property weak to strong  
Only this change is required.My code will help you.

enter image description here

var listOfTasks : [(String,String,String)] = []将变量声明为全局

listOfTasks = [ ("Hey There","Welcome","12:00"), ("Hi","Hello","1:00") ] 

比这行。这段代码工作正常。

答案 2 :(得分:1)

点击XCode右上角的两个隔行扫描圆圈。这将屏幕分成两部分。确保一方是故事板,另一方是UITableViewCell的自定义子类。接下来,单击+保持并从每个空圆圈拖动到正确的视图(因此,对于标签,确保它已连接到预期的标签。)

在执行此操作之前,您可能还想清除单元格中的所有现有连接。在故事板中执行此操作,按住shift并右键单击tableView中的单元格。确保从下拉列表中选择单元格。然后单击屏幕右上角带有圆圈的箭头。这将显示现有的插座连接。只需按任意现有的x旁边的x,这样就不会有任何“僵尸网点”。

答案 3 :(得分:0)

当我上次制作自定义TableViewCell类时,我不得不添加如下代码:

init(style: UITableViewCellStyle, reuseIdentifier: String) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
}

override func awakeFromNib() {
    super.awakeFromNib()
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

您是否正在为UITableViewCell实现所有必需的方法?