2017-11-07 4 views
0

내 목록 앱에서 사용자는 작업을 추가 할 때 우선 순위를 선택할 수 있습니다.우선 순위 기반의 테이블 뷰에서 자동 정렬 행 3/4

우선 순위가 설정되어
cell.priorityImageView.image = UIImage(named: String(tasks[indexPath.row].priority)) 

우선 순위 (INT) 인 것 중 하나가 I 0,1,2,3

여기 바와 같이 우선도는, 각 셀에서 이미지 뷰의 색상을 설정 자동으로 행을 정렬하여 모든 3이 맨 위에 오도록 모든 2s가 등등이됩니다.

이 모든 것이 가능합니까? 그렇다면 어떻게?

나는 작업 배열에게 도움을
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

이 더 많은 코드를 제공하면 가장 좋을 것입니다.

당신의 tableview이 Task 객체가 priority 속성이 Task 객체의 배열로부터 데이터를 가져 오는 경우

, 당신은 단지 우선 순위가 업데이트 된 후 배열을 정렬하고있는 tableview를 다시로드 (아니면에 삽입 할 수 있어야) 올바른 위치 당신은 모든 시간을 정렬 할 필요가 없습니다, 그러나 당신의 목록이 대규모가 아닌 경우, 저장 시간이 무시할 수있을 것입니다 :

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

이 우선 순위가 높은 작업은 작업 전에 와서 가지고 작업을 정렬 낮은 우선 순위로. 그런 다음 tableview.reloadData()으로 전화하십시오.

+0

불행히도, 이것은 작동하지 않지만 좀 더 많은 정보로 내 대답을 업데이트했습니다 :) –