Just some general suggestions for code cleanup

This is bad, you are adding this subview everytime this cell is dequeued.  Try subclassing UITableViewCell and adding this there, making it a property and using delegate.  If you do take this path I would consider making the VC a delegate of the cell and tell it when the value of the switch changed with a custom protocol.  Something like cell:switchDidChangeValue: