I have a tableview where each cell has a UISwitch
, when i select a cell i will be able to toggle UISwitch
,when i select the next cell in tableview i shouldn't be able to toggle it or even if i want to toggle it the earlier selected toggle should get switched off with a UIAlertView
,,so basically only one UITableViewCell
should be allowed to toggle.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier=@"cellIdentifier";
PPtableCell *cell=(PPtableCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil)
{
cell=[[PPtableCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.remedyImage.image=[[remedyArray objectAtIndex:indexPath.row]objectForKey:@"RemedyImageDic"];
cell.remedyTextLabel.text=[[remedyArray objectAtIndex:indexPath.row]objectForKey:@"RemedyTxtDic"];
cell.remedyLabel.text=[[remedyArray objectAtIndex:indexPath.row]objectForKey:@"RemedyName"];
cell.remedyID=[[[remedyArray objectAtIndex:indexPath.row]objectForKey:@"RemedyID"]intValue];
cell.frequency = [[[remedyArray objectAtIndex:indexPath.row]objectForKey:@"RemedyFrequency"]intValue];
cell.symptomIDNo =[[[remedyArray objectAtIndex:indexPath.row]objectForKey:@"SymptomID"]intValue];
// cell.textLabel.text = [[notify objectAtIndex:indexPath.row] objectForKey:@"notifyData"];
// Specific Background Image Depending upon the Row
if (indexPath.row==0)
{
cell.backgroundCellImage.image=[UIImage imageNamed:@"top-cell.png"];
}
else if (indexPath.row==remedyArray.count-1)
{
cell.backgroundCellImage.image=[UIImage imageNamed:@"bottom-cell.png"];
}
else
{
cell.backgroundCellImage.image=[UIImage imageNamed:@"middle-cell.png"];
}
if ([indexPath isEqual:remedySelectedIndexPath])
{
cell.isZoomedIn = YES;
}
else
{
cell.isZoomedIn = NO;
}
return cell;
}
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView==remedyTableView)
{
PPtableCell *cell = nil;
cell=( PPtableCell*)[tableView cellForRowAtIndexPath:indexPath];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
CGSize maximumLabelSize=CGSizeMake(320.0,100.0);
CGSize expectedLabelSize=[cell.remedyTextLabel.text sizeWithFont:cell.remedyTextLabel.font constrainedToSize:maximumLabelSize
lineBreakMode:cell.remedyTextLabel.lineBreakMode];
if (expectedLabelSize.height > 17 || expectedLabelSize.width > 260.0)
{
if ([indexPath isEqual:remedySelectedIndexPath])
{
remedySelectedIndexPath = nil;
[remedyTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
else
{
oldSelectedIndexPath=remedySelectedIndexPath;
remedySelectedIndexPath=indexPath;
if (oldSelectedIndexPath==nil)
{
[remedyTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:remedySelectedIndexPath] withRowAnimation:UITableViewRowAnimationNone];
}
else
{
[remedyTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:oldSelectedIndexPath,remedySelectedIndexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
}
}
}
}
}
Here is the code that deals with the UISwitches:
(IBAction)notification:(id)sender {
if (sender == notifyMe) {
if(notifyMe.isOn == YES) {
toggle = YES;
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:notifyMe.on forKey:@"switchValueKey"];
[defaults synchronize];
NSLog(@"Notification is ON");
}
} else {
toggle = NO;
}
}
if ([cellDelegate respondsToSelector:@selector(notificationReqd:)]) {
[cellDelegate notificationReqd:self];
}
}