Sorry I’m pretty new to iOS dev.
I have a UITableView setup from cells being pulled from a single XiB nib. I’ve created a on/off switch in the nib, and I am trying to save the state of the switch upon viewWillDisappear for the number of cells that I have. (6 cells to be exact).
How can I loop through all the cells and save this information?
I tried this in my UIViewController to get the info for one cell:
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
UITableView *tv = (UITableView *)self.view;
UITableViewCell *tvc = [tv cellForRowAtIndexPath:0];
}
it gives me the error “Program received signal: “EXC_BAD_INSTRUCTION”.
How can I accomplish this?
You have to pass a valid
NSIndexPathtocellForRowAtIndexPath:. You used 0, which means no indexPath.You should use something like this:
BUT. Don’t do this. Don’t save state in the UITableViewCell.
Update your dataSource when a switch changed its state.
If you have implemented the UITableViewDataSource methods the right why your tableView reuses cells. That means the state of your cells will vanish when the cells are reused.
Your approach might work for 6 cells. But it will fail for 9 cells.
It will probably even fail if you scroll the first cell off screen.
I wrote a quick demo (if you don’t use ARC add
releasewhere they are necessary) to show you how you should do it instead:as you see it’s not very complicated to not store state in the cells 🙂