Fix view-controller cleanup on interactive navigation.

Also refactored accordingly.