当前位置: 首页 > 面试题库 >

Swift中的简单UITableView-意外发现nil

陈淳
2023-03-14
问题内容

很简单的代码:

func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
    return 1
}

func tableView(tableView:UITableView!, numberOfRowsInSection section:Int) -> Int {
    return 5
}


func tableView(tableView:UITableView!, cellForRowAtIndexPath indexPath:NSIndexPath!) -> UITableViewCell! {
    let cell: BookTableViewCell = BookTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "BookCell")
    println("ip: \(indexPath.row)")
    cell.bookLabel.text = "test"

    return cell
}

在cell.bookLabel.text行上,我得到了:

fatal error: unexpectedly found nil while unwrapping an Optional value

BookTableViewCell的定义如下:

class BookTableViewCell: UITableViewCell {

    @IBOutlet var bookLabel: UILabel

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

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

        // Configure the view for the selected state
    }

}

并且bookLabel已正确连接到情节提要中的原型单元中。为什么会出现此错误?


问题答案:

在代码中创建视图时,其IBOutlet属性无法正确连接。您需要从dequeueReusableCellWithIdentifier以下位置获得的版本:

let cell = tableView.dequeueReusableCellWithIdentifier("BookCell") as BookTableViewCell


 类似资料:
  • 问题内容: 我正在努力弄清楚此代码段出了什么问题。目前这在Objective- C中有效,但是在Swift中这只是在方法的第一行崩溃。它在控制台日志中显示错误消息:。 问题答案: 另请参阅马特的答案,其中包含解决方案的后半部分 让我们找到一个无需创建自定义子类或笔尖的解决方案 真正的问题在于,Swift区分可以为空()的对象和不能为空的对象。如果您没有为标识符注册笔尖,则可以返回。 这意味着我们必

  • 我刚刚制作了一个注册表单,在添加最终验证(MySQL验证)时遇到了一个问题。 这是我得到的错误:解析错误:语法错误,意外的'elseif'(T_ELSEIF)在C:\xampp\htdocs\Signup\包含\第72行的signup.php 第72行已标记,以帮助您解决此问题。 如果我注释和之间的所有内容,一切正常(除了我没有用户名验证的事实)。 如果你想知道$用户名是什么: 我在SO上读到了一

  • 问题内容: 我是java的新手,我的问题是,按下键后输出显示2个数字,但我不明白为什么。 这是代码: 问题答案: 尽管我不能重现该问题:(请参阅此处),但我的建议是也打印出字符(作为整数)。这将帮助您调试:

  • Simple-UITableView-Swift 是 Swift 编写的 Boilerplate UITablieView: 给定 tableData 数据数组 支持 XCode 6.1 和 Swift 1.1

  • 用 Swift 语言写的一个UITableView常用操作,比如添加、删除、移动等。

  • 问题内容: 我相信我遇到了一个问题,即我的关闭发生在后台线程上,而UITableView的更新速度不够快。我正在打电话给REST服务,而在关闭时,我有一个电话,但是要花几秒钟的时间才能发生。如何使数据重新加载更快(也许在主线程上?) REST查询功能-使用SwiftyJSON库进行解码 在调试器中调用一次 问题答案: UIKit不是线程安全的。UI仅应从主线程更新: 更新 。在Swift 3及更高