在UITableView的顶部项目中重新排序和插入的逻辑是什么

时间:2016-02-15 16:55:16

标签: ios swift uitableview

我想要做的是让用户重新排序(不排序)UITableView中的项目。换句话说,更改每个项目输入的顺序,例如最常见的行为是显示在顶部的表格中输入的第一个项目,但用户可能希望在顶部看到最后一个项目而不是验证什么他/她进来了。

实现此行为的最常见逻辑是什么?

以下是我用来将数据输入表格的代码。

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate{

    @IBAction func enter(sender: AnyObject?) {
         itemList.append(newItem)
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("reusableCell", forIndexPath: indexPath) as! CustomCell

        let data = itemList[indexPath.row]
        cell.displayPrice!.text = String(data.basePrice)
        return cell
    }
}

我知道如果用户重新订购表格,我可能需要更改插入项目的方式,例如......

    var insertAtTop = false
    @IBAction func enter(sender: AnyObject?) {
        if insertAtTop{
           itemList.insert(newItem, atIndex: 0)
       }else{
          itemList.append(newItem)
      }
    }

现在它会将项目插入顶部,但当然,这并不会对数组itemList中的项目进行重新排序。

有人做过这样的事吗?

我想我可以只有一个Insert At Top选项并清除表格以开始新的但用户会丢失已输入的任何项目。

enter image description here

1 个答案:

答案 0 :(得分:1)

如果要允许用户按时间顺序对表中显示的数据进行排序,最好将时间戳(例如NSDate().timeIntervalSince1970)与表中的每个数据一起保存,然后{{1通过升序或降序时间戳值来表示数据源数组。

filter