2017-06-18 5 views
0

Ich möchte dynamische Radio-Schaltflächen mit benutzerdefinierten Zelle erstellen. Ich versuchte und in der Lage, mit Story-Board erstellen. aber wie kann man nur eine Radio Button Auswahl erlauben?dynamische Radio-Tasten uitableview benutzerdefinierte Zelle ios

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    MChangeServiceTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"changeServiceCellidentifier"]; 

    cell.serviceLabelView.text [email protected]"test"; 



    cell.radioButton.tag=indexPath.row; 


    [cell.radioButton addTarget:self action:@selector(radioButtonColorChange:) forControlEvents:UIControlEventTouchUpInside]; 

     return cell; 
} 

- (void)radioButtonColorChange:(id)sender 
{ 
    UIButton *button=(UIButton *) sender; 
    NSIndexPath *indexpath = [NSIndexPath indexPathForRow:button.tag inSection:0]; 
    MChangeServiceTableViewCell *tappedCell = (MChangeServiceTableViewCell *)[self.listTableView cellForRowAtIndexPath:indexpath]; 
    if ([tappedCell.radioButton.imageView.image isEqual:[UIImage imageNamed:@"radio_button_unselected.png"]]) 
    { 
     [tappedCell.radioButton setImage:[UIImage imageNamed:@"radio_button_selected.png"] forState:UIControlStateNormal]; 
    } 
    else 
    { 
     [tappedCell.radioButton setImage:[UIImage imageNamed:@"radio_button_unselected.png"] forState:UIControlStateNormal]; 
    } 
} 

Ich bin in der Lage, das Bild der Radio-Button zu ändern, indem Sie auf it.But wie die restlichen Optionsfelder nicht markiert Zustand zu ändern, wenn eine Taste gedrückt wird?

+0

Wenn Sie ein Problem haben, können Sie schreiben, was Sie mit einer klaren Erklärung versucht haben, was nicht funktioniert und bieten ein [Minimal, vollständig und prüfbare Beispiel] (https://stackoverflow.com/help/mcve). Ich schlage vor, eine gute Frage zu lesen (http://stackoverflow.com/help/how-to-ask). Achten Sie auch darauf, die [Tour] (https://stackoverflow.com/tour) –

Antwort

0

Ich schlage vor, dass Sie so aktuelle ausgewählte Schaltfläche in einer anderen Variablen speichern.

@interface YourViewController() 
@property (strong, nonatomic) UIButton *currentBtn; 
@property (nonatomic) NSInteger currentSelectedIndex; 

@end 

Dann

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    _currentSelectedIndex = -1; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    MChangeServiceTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"changeServiceCellidentifier"]; 

    cell.serviceLabelView.text [email protected]"test"; 

    cell.radioButton.tag=indexPath.row; 

    [cell.radioButton setImage:[UIImage imageNamed:@"radio_button_selected.png"] forState:UIControlStateSelected]; 
    [cell.radioButton setImage:[UIImage imageNamed:@"radio_button_unselected.png"] forState:UIControlStateNormal]; 
    [cell.radioButton addTarget:self action:@selector(radioButtonColorChange:) forControlEvents:UIControlEventTouchUpInside]; 

    [cell.radioButton setSelected:NO]; 

    if (indexPath.row == _currentSelectedIndex) { 
     [cell.radioButton setSelected:YES]; 
     _currentBtn = cell.radioButton; 
    } 

    return cell; 
} 

- (void)radioButtonColorChange:(id)sender 
{ 
    _currentBtn.selected = NO; 
    UIButton *button=(UIButton *) sender; 
    button.selected = !button.isSelected; 
    _currentBtn = button; 
    _currentSelectedIndex = button.tag; 
} 
+0

zu nehmen, ich habe den obigen Code verwendet, und ich kann Radiobutton auswählen. Aber wenn ich die Tabellenansicht scrolle, kann ich sehen, Zellen von unten hat Einer der Zellenradios ist ausgewählt. – sampath

+0

Ich habe meinen Beitrag bearbeitet. Bitte versuchen Sie diesen Code. – vp2698

+0

immer noch das gleiche Ergebnis. Andere Zellen erhalten Schaltflächenbilder ausgewählt. – sampath

Verwandte Themen