我想这样做:
public func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
struct Cell {
static let height: CGFloat = {
var cell:RentalViewCell = tableView.dequeueReusableCellWithIdentifier("RentalViewCell") as RentalViewCell
return cell.bounds.size.height
}()
}
return Cell.height
}
..但是swift编译器抛出一个摇摆不定的东西,并且因为块内的tableView变量而在创建SIL时给出了分段错误。
我知道还有其他方法可以写这个,但有人可以解释为什么它不能这样工作以及为什么我无法访问tableView变量。我尝试在块中使用捕获列表无济于事。
由于
答案 0 :(得分:0)
在表视图datasource / delegate方法中定义struct
没有任何意义。
在其他地方定义结构 - 如果你真的有充分的理由 -
在数据源方法中使用。
我怀疑你真正想要的是设置表格视图的rowHeight
属性。
答案 1 :(得分:0)
考虑一下你的代码在说什么,你想要在tableView(heightForRowAtIndexPath:)
的所有调用上初始化一个静态实例,高度这是否真的有意义,因为静态实例用a的值初始化单打电话?想象一下,这是一个超类,并且子类使用dequeueReusable...
的不同实现,应该使用哪个实现来确定所有子类的高度?
更好的实现方法是将它计算一次到UITableViewController子类的可选项并将其缓存在那里。