麻烦将不止一个或两个单元格放入UITableView中,使用不同大小的Swift

时间:2017-03-17 22:01:28

标签: ios swift uitableview

我正在尝试在表格视图中构建两个(或更多)自定义单元格,并且每个单元格都没有自定义类,我使用故事板进行单元格原型设计,tableView.dequeueReusableCell(withIdentifier: "customCellName", for: indexPath)从{{1}创建不同的单元格方法。

我需要高度不同于单元格类型2的单元格类型1,但如果尝试使用cellForRowAt单元格类型2未正确显示。

我尝试构建一个“虚拟项目”来理解正确的方法,这里是我的代码:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat

在ViewDidLoad中:

var cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

let value = dataArray[indexPath.row]

if (value == "second") || (value == "Hawaii") {
    cell = self.tableView.dequeueReusableCell(withIdentifier: "cellTwo", for: indexPath)
}
let lbl = cell.viewWithTag(100) as! UILabel
lbl.text = dataArray[indexPath.row]
return cell

结果如下:

Cells view example

每个尺寸相同的细胞都不适合我。

1 个答案:

答案 0 :(得分:0)

如果要创建自定义单元格外观,则必须创建UITableViewCell的子类 - 有一些great tutorials on how to do that

然后,您必须注册自定义单元格,以便UITableView了解它。请参阅register(_:​for​Cell​Reuse​Identifier:​)方法。

table​View(_:​height​For​Row​At:​)中,您可以编写以下代码以确定特定单元格的高度:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat

     let value = dataArray[indexPath.row]

     if (value == "second") || (value == "Hawaii") {
         return 180.0
     } else {
         return 40.0
     }
}