Adding a radio button to a custom TableView cell and inability to access an external

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]; } 
+4
source share
1 answer

try changing this line to this:

 RadioBtnCell *cell = (RadioBtnCell *)[self.questionTblView viewWithTag:RadioTag]; to RadioBtnCell *cell = (RadioBtnCell *)[self.questionTblView cellForRowAtIndexPath:*indexPathofthecell*]; 

This way you can access the table view cell. After that, you can get the button from the views of the contents of the cellular network and continue encoding.

Suppose that if you do not know indexPath, you can create an indexPath fromm rowNumber of the table view (I think you saved the table row number in RadioTag, if so, so that you can use this field as a parameter).

0
source

Source: https://habr.com/ru/post/1432097/


All Articles