I believe you're having this issue because you are pushing a new UIViewController instance whenever you go back and forth - the new instance doesn't know what the previous checkedPath property was.
To solve this you need to either:
- Persist the checked row value somehow (NSUserDefaults, CoreData, etc..). This way any instance would get the same checked row value
- Re-use the same view controller when pushing.