使用超过 1 个 Prototype Cell 时 UITableView 的奇怪行为

UITableView strange behaviour when using more than 1 Prototype Cell

所以我有一个 UITableView,我计划在其中使用 2 个原型单元格。我们称它们为单元格 A 和单元格 B。单元格 A 有自己的布局,单元格 B 有自己的布局。

事情是这样的,在只有 1 个原型单元格的典型 UITableView 实现中,在设置所有单元格及其属性后,cellForRowAtIndexPath 负责根据 numberOfRowsInSection 中的 (x) 个项目填充所有行。

这是我遇到问题的地方。我已经在我的 UITableView 中实现了我的原型单元格,当我 运行 它时,我注意到 cellForRowAtIndexPath 只被调用了两次,即使我在 (x) 个项目中有一个值大于 2。Doesn不管我将它设置成什么,它只会被调用两次。我已经有了必要的 if 语句来根据单元格索引等选择单元格原型……所以这不是问题。问题是 cellForRowAtIndexPath 只是被调用了两次,而不是遍历所有项目。

为什么会这样,我该如何解决?

这是我的数据源方法代码:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return 8

}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    Scripts.log("Data Count = \(indexPath.row)")

    if indexPath.row == 0{

        var cell: ContactDetailImageCell = tableView.dequeueReusableCellWithIdentifier(NAME_OF_CUSTOM_IMAGE_CELL) as ContactDetailImageCell

        cell.cardPhoto.image = aContact.profilePicture
        cell.fullName.text = aContact.getDisplayName()
        cell.workplace.text = aContact.workplace

        return cell

    }
    else{

        var cell: ContactDetailPhoneNumCell = tableView.dequeueReusableCellWithIdentifier(NAME_OF_CUSTOM_PHONE_CELL) as ContactDetailPhoneNumCell

        return cell

    }

    return UITableViewCell()

}

您的单元格高度是多少? cellForRowAtIndexPath 只有在 table 认为它需要显示单元格时才会被调用。因此整个重用机制。因此,如果您有 8 个单元格,并且它认为 2 个单元格填满了屏幕,那么在您滚动 up/down.

之前,它不会再要求任何内容

您要为 heightForRowAtIndexPath 返回什么。