一尘不染

如何在Swift中设置UITableViewCellStyleSubtitle和dequeueReusableCell?

swift

我想要一个UITableView使用subtitle样式的单元格dequeueReusableCellWithIdentifier

我最初的Objective-C代码是:

static NSString* reuseIdentifier = @"Cell";
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
if(!cell)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier];
}

UITableView已经在SO上搜索了几个问题之后,我想像这样在Swift中编写它:

tableView.registerClass(UITableViewCell.classForCoder(), forCellReuseIdentifier: "Cell")

let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

但这并不能让我说我想要一种subtitle风格。所以我尝试了这个:

var cell :UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")

这给了我一个subtitle牢房,但是却没有让我dequeueReusableCellWithIdentifier

我已经研究了更多内容,并观看了此视频教程,但是他创建了一个单独subclass的对象UITableViewCell,我认为这是不必要的,因为我之前在Obj-
C中实现了相同的效果。

有任何想法吗?谢谢。


阅读 400

收藏
2020-07-07

共1个答案

一尘不染

请记住,UITableView该函数在函数中定义为可选,这意味着您的初始单元格声明需要检查属性中的可选。另外,返回的排队单元格也是可选的,因此请确保对进行强制转换UITableViewCell。之后,我们可以强制展开,因为我们知道我们有一个牢房。

var cell:UITableViewCell? = 
tableView?.dequeueReusableCellWithIdentifier(reuseIdentifier) as? UITableViewCell
if (cell == nil)
{
   cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, 
                reuseIdentifier: reuseIdentifier)
}
// At this point, we definitely have a cell -- either dequeued or newly created,
// so let's force unwrap the optional into a UITableViewCell
cell!.detailTextLabel.text = "some text"

return cell
2020-07-07