I add Radio buttons in a custom UITableView cell and calling a method on it to change the image or background image. I can install the selected button Image from the sender, but I want to make other buttons in their original position, which I canβt install, since below the functionality should look like the correct radio in the cell
I also encounter the problem of getting the correct pointer path in this method - (void) TableRadioButtonSelection: (id) sender;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *RadioIdentifier = @"RadioCellIdentifier"; RadioBtnCell *myRadiocell = (RadioBtnCell *)[tableView dequeueReusableCellWithIdentifier:RadioIdentifier]; if(myRadiocell == nil) { [[NSBundle mainBundle] loadNibNamed:@"RadioBtnCell" owner:self options:nil]; myRadiocell = radioCell; //[myRadiocell.radioBtn1 setBackgroundImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; myRadiocell.radioBtn1.tag = ButtonTag; //[myRadiocell.radioBtn2 setBackgroundImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; myRadiocell.radioBtn2.tag = ButtonTag1; //[myRadiocell.radioBtn3 setBackgroundImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; myRadiocell.radioBtn3.tag = ButtonTag2; myRadiocell.tag = RadioTag; [myRadiocell.radioBtn1 addTarget:self action:@selector(TableRadioButtonSelection:) forControlEvents:UIControlEventTouchUpInside]; [myRadiocell.radioBtn2 addTarget:self action:@selector(TableRadioButtonSelection:) forControlEvents:UIControlEventTouchUpInside]; [myRadiocell.radioBtn3 addTarget:self action:@selector(TableRadioButtonSelection:) forControlEvents:UIControlEventTouchUpInside]; myRadiocell.backgroundView.backgroundColor = [UIColor clearColor]; self.radioCell = nil; } return myRadiocell; } - (void) TableRadioButtonSelection:(id)sender { //RadioBtnCell *buttonCell = (RadioBtnCell*)[[btn superview] superview]; RadioBtnCell *cell = (RadioBtnCell *)[self.questionTblView viewWithTag:RadioTag]; UIButton *mybtn = (UIButton *)[cell.contentView viewWithTag:ButtonTag]; UIButton *mybtn1 = (UIButton *)[cell.contentView viewWithTag:ButtonTag1]; UIButton *mybtn2 = (UIButton *)[cell.contentView viewWithTag:ButtonTag2]; [mybtn setBackgroundImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; [mybtn1 setBackgroundImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; [mybtn2 setBackgroundImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; //NSLog(@"%@",[cell subviews]); UIView* mysubview = [cell.contentView viewWithTag:ButtonTag]; // Make sure your UITextField really *is* the last object you added. UIView* mysubview1 = [cell.contentView viewWithTag:ButtonTag1]; UIView* mysubview2 = [cell.contentView viewWithTag:ButtonTag2]; // I am unable to set Image of other buttons apart from sender. //for(UIView *item in [mysubview subviews]) { if ([mysubview isKindOfClass:[UIButton class]]) { UIButton *newBtn = (UIButton*)mysubview; UIButton *newBtn1 = (UIButton*)mysubview1; UIButton *newBtn2 = (UIButton*)mysubview2; NSLog(@"OK %@",newBtn); //[newBtn setBackgroundImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; [newBtn setImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; [newBtn1 setImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; [newBtn2 setImage:[UIImage imageNamed:@"radiobtn.png"] forState:UIControlStateNormal]; } //} NSIndexPath *indexPath = [self.questionTblView indexPathForCell:cell]; NSLog(@"%d",indexPath.row); // Below code is setting Image of selected Button properly as checked but above code for making button onto original state is not setting button image or background image UIButton *btn = (UIButton *)sender; [btn setImage:[UIImage imageNamed:@"radiobtn_chk.png"] forState:UIControlStateNormal]; //[btn setBackgroundImage:[UIImage imageNamed:@"radiobtn_chk.png"] forState:UIControlStateNormal]; }
source share