 <p>You are settiing it properly ,The problem is </p> <pre><code>[self.tableView reloadData]; </code></pre> <p>as the cell is reloaded it goes to default setting.Remove that line and the code will work fine.If you want to reload at htat time for some other purpose ,Manage the switch state by keeping it state saved in some variable and use it to set in the <code>cellForRowAtIndexpath</code></p>