UITableViewCell 数据源方法返回cell的疑问

如题,视图控制器定义了一个成员变量:mCell,初始化为nil
然后在数据源方法override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 把cell赋值给mCell:
图片描述

然后在计算高度的方法中想使用mCell,结果报nil错误:

图片描述

请问原因是啥?

阅读 4.3k
3 个回答

在UITableView中是先计算每个Cell的高度,以便确定UIScrollView的contentSize,然后再调用数据源方法获取Cell。显然,当你的代码在计算Cell的高度时,Cell还没被创建。我的建议是搞一个Model,将Cell中的数据进行封装,并在Model中提供获取Cell高度的接口。

不太懂swift
你注册cell了吗,如果注册了是不用判断cell是否为nil
(现在判断一个东西为空,我都是用感叹号判断了,写==容易出错)

另外我记得heightforrow方法会调cellforrow还是cellforrow会调heightforrow的
这样弄会循环,我不知道你heightforrow方法里面是什么意思

我的cellheight如果为了适配8以下的,我会给模型增加一个cellheight属性
再重写cellheight的getter方法在里面计算高度,然后heightforrow返回当前row模型的cellheight

注意下这两个方法的调用顺序

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题