I want Checkmark in particular TableView Cell.
So I have used code :
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
newRow = [indexPath row];
oldRow = [lastIndexPath row];
if (newRow != oldRow) {
UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];
newCell.accessoryType = UITableViewCellAccessoryCheckmark;
UITableViewCell *oldCell = [tableView cellForRowAtIndexPath: lastIndexPath];
oldCell.accessoryType = UITableViewCellAccessoryNone;
lastIndexPath = indexPath;
}
else{
UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];
newCell.accessoryType = UITableViewCellAccessoryCheckmark;
lastIndexPath = indexPath;
}}
Its working in iPhone Simulator fine.
But while testing in iPhone device, it crashes the application.
Any solution for this..?
Thanks in advance.
The most likely cause of your crash is in your ivar,
lastIndexPath. You’re storing values in this without retaining them, so they may be released at any time. Try defining a property namedlastIndexPath(retainfor manual reference counting,strongfor automatic reference counting). Then you can useself.lastIndexPath = indexPathor[self setLastIndexPath:indexPath].Also, it’s bad to forcibly change a cell contents like this. It’s better to store the selected index, then reload the table data. For maximum efficiency, only update the changed cells. Have your
cellForRowAtIndexPath:method switch the checkmarks on and off.