2017-11-07 7 views
0

リストアプリでは、タスクを追加するときに優先度を選択できます。ここで見られるように、この優先度は、各セルにおける画像表示の色を設定します優先順位が設定されている場合優先順位に基づいてテーブルビューの行を自動配置 - スウィフト3/4

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

、優先度(INT)のいずれかである0,1,2,3

Iが希望自動的に行を並べ替えて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() 
    } 
} 

おかげで、

ルーク

答えて

1

に行われますがありますより多くのコードを提供した方が良いでしょう。

あなたはテーブルビューがTaskオブジェクトがpriorityプロパティを持つTaskオブジェクトの配列からデータを取得している場合は、単に優先順位が更新された後、配列をソートし、テーブルビューをリロード(または、に挿入することができなければなりません正しい場所)あなたはすべての時間をソートする必要はありませんが、あなたのリストは巨大でない場合は、時間保存は無視されますので:

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

これは、優先度の高いタスクがタスクの前に来ているタスクをソート優先順位は低くなります。その後、tableview.reloadData()に電話してください。

+0

残念ながら、これは動作しませんが、私はいくつかの詳細と私の答えを更新しました:) –

関連する問題