ios - 保留 TableView 中数组元素的顺序

标签 ios swift uitableview

我有一个 UITableView渲染自定义 PeopleCell UITableViewCell子类。我有一份人员名单[A, B, C]并且它们必须按该顺序显示。但是,当我使用以下方法渲染表格中的单元格时:

var cell: PeopleCell = tableView.dequeueReusableCellWithIdentifier(identifier) as! PeopleCell

UITableView将使单元格乱序。有时是 B, C, AC, A, B等等,你明白了。我记得过去遇到过这个问题,我采用了不使用可重复使用的单元格的临时解决方案,因为我在任何时候渲染的单元格都少于 5 个。我想要一些建议 - 谢谢!

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let identifier = cellIdentifier

        var cell: PeopleCell = tableView.dequeueReusableCellWithIdentifier(identifier) as! PeopleCell

        let person = self.people![indexPath.row] as Person

        cell.lbl_name.text = nil
        cell.lbl_title.text = nil
        cell.btn_phone.setTitle(nil, forState: UIControlState.Normal)
        cell.btn_email.setTitle(nil, forState: UIControlState.Normal)
        cell.index = nil

        cell.lbl_name.text = person.contactName
        cell.lbl_title.text = person.title
        cell.btn_phone.setTitle(person.phoneNumber, forState: UIControlState.Normal)
        cell.btn_email.setTitle(person.emailAddress, forState: UIControlState.Normal)
        cell.index = indexPath.row
        cell.delegate = self

        return cell
    }

我使用的数据源只是一个 [Person] 的 Swift 数组

最佳答案

您没有提供足够的信息让我们了解您的具体问题,因此我们必须给您一个笼统的答复。

一般的答案是 cellForRowAtIndexPath 需要使用数据模型(通常是数组)来保存要在每个单元格中显示的值。如果你有一个分区 TableView ,其中既有部分又有行,你可以使用一个数组数组,其中外部数组是你的部分,内部数组是每个部分中的行。

当您将单元格出列时,请记住它之前可能用于显示数组中的不同条目,因此它的 View 中的值是错误的。您需要完全 配置单元格,包括将没有值的字段设置为空/默认状态。如果您不清空未使用的 View ,它可能具有上次使用时的值。

回收电池有点像纸质表格。想象一下,医生办公室重复使用它提供给新患者的那些愚蠢的表格。办公室给新病人一张表格,上面有其他人的信息,新病人必须先擦掉表格上的所有内容,然后才能填写他们的新信息。如果他们不这样做,他们可能会留下关于他们没有的疾病的信息。

回收电池就是这样。您必须先删除单元格,然后再在其中安装新信息,或者至少用新数据替换单元格中所有 View 中的数据(或者如果不使用它,则清空 View 。)因此,例如,如果您如果单元格中有些有图像,有些则没有,则需要将回收单元格的 imageView.image 设置为 nil,以防先前使用该单元格确实在 ImageView 中安装图像。

关于ios - 保留 TableView 中数组元素的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31767903/

相关文章:

ios - 如何在不旋转 map 的情况下将 GoogleMaps 居中?

ios - 在 Pod 中停止本地化

ios - UIImageView显示在错误的UITableViewCell中

uitableview - 通过 UIPageController VC segues 覆盖 UITableView 上的滑动操作

iphone - 如何为 UIScrollView 中的内容区域设置背景颜色?

ios - UIPanGesture 识别器仅向一个方向滑动

ios - Ionic 在 iOS 上构建和模拟 - 错误

ios - 从 iOS Xcode 5 中的数组列表中一一显示字符串

ios - 使用 UIBezierPath 在 Swift 中制作旭日形

iphone - uitableview 行呈现奇怪的行为