【问题标题】:Auto Arrange Rows In Tableview Based On Priority - Swift 3/4基于优先级在 Tableview 中自动排列行 - Swift 3/4
【发布时间】:2017-11-07 20:50:12
【问题描述】:

在我的待办事项应用程序中,用户可以在添加任务时选择优先级。此优先级设置每个单元格中图像视图的颜色,如下所示:

cell.priorityImageView.image = UIImage(named: String(tasks[indexPath.row].priority))

设置优先级时,priority(int) 为 0,1,2,3 中的任一个

我想自动对行进行排序,以便所有 3 都在顶部,所有 2 都在下面等等

这有可能吗?如果有,怎么做?

我有一个任务数组

var tasks = [Task]()

而且添加任务的时候,是通过核心数据来完成的

 func AddTaskToCoreData() {
    //Access Name - Make sure to check presence
    let task = taskTextView.text!
    let taskPriority = Int16(priorityNumber)
    var date = "12:00"
    if selectedDate == true {
        let datepick = datePicker.date
        let formatter = DateFormatter()
        formatter.dateFormat = "MMM d HH:mm"
        let result = formatter.string(from: datepick)
        date = result
    } else {
        date = ""
    }

    if taskTextView.text != "" {
        let mainTask = Task(context: PersistenceService.context)
        mainTask.task = task
        mainTask.priority = taskPriority
        mainTask.notification = date
        print(selectedDate)
        PersistenceService.saveContext()
        self.tasks.append(mainTask)
        self.tableView.reloadData()
        taskTextView.text = ""
        refreshTaskAmount()
    }
}

感谢您的帮助,

卢克

【问题讨论】:

    标签: swift uitableview sorting swift3 rows


    【解决方案1】:

    最好能提供更多代码。

    如果您的 tableview 从 Task 对象数组中获取其数据,其中 Task 对象具有 priority 属性,您应该在更新优先级后对数组进行排序并重新加载 tableview(或者你可以插入正确的位置,这样你就不必每次都排序,但如果你的列表不是很大,节省的时间可以忽略不计):

    self.tasks = self.tasks.sorted(by: {$0.priority > $1.priority})

    这会将任务排序为优先级较高的任务排在优先级较低的任务之前。然后只需拨打tableview.reloadData()。

    【讨论】:

    • 不幸的是,这不起作用,但我已经用更多信息更新了我的答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 2020-10-01
    • 2021-01-09
    相关资源
    最近更新 更多