ios - Reordering tableview cells -


i trying re order cells based on priority (an enum). have double checked enum values correct. here enum

enum priority{     case low     case neutral     case high     case urgent } 

as can see, lower priority has lower hash values. trying compare 2 cells; cell , cell above it. if cell's value greater 1 above it, shift upwards. obtain indexpath of cell above using

var newindexpath = indexpath(row: indexpath.row - 1 , section: indexpath.section) 

after comparing enum values using

if(comparepriority.hashvalue < priorityvalue.hashvalue) 

i attempt switch order using

tableview.moverow(at: indexpath, to: newindexpath) 

the result interesting, use pictures explain. note of code in cellforrowat function , cells given priority correspond name except "test", these pictures taken in slow motion meaning user wouldn't able see switch happening.

mid-segue cells start switching

cells finish switching cells finish switching

just sort array of items according these priorities , table reload.

in way index 0 first item etc. , you'll simple code that's not confusing on fly sorting/comparing on place.

sorting (after you've made enum of type int , renamed priorityvalue priority suggest do):

enum priority: int {     case low     = 0     case neutral = 1     case high    = 2     case urgent  = 3 }  items.sorted(by: { $0.priority < $1.priority }) 

Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -