在动态单选按钮中更改图像

时间:2016-02-03 11:17:55

标签: ios objective-c iphone swift ios7

表视图单元格中的

enter image description here我正在动态创建单选按钮。如果我单击一个按钮,那么我想将其余按钮更改为禁用

 -(void)RadioButton:(UIButton *)Sender
 {
     int i=Sender.tag;
 }

在此方法中,我只能更改点击的按钮图像。

2 个答案:

答案 0 :(得分:0)

假设您要更新所有单元格中的单选按钮,一旦按下按钮以反映所有单元格中的单选按钮,您将不得不重新加载表格视图。您可以尝试以下代码

 NSInteger selectedButtonIndex = -1;
 -(void)RadioButton:(UIButton *)Sender
 {
     selectedButtonIndex=Sender.superview.tag;
     // reload table view
 }

 -(UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //create your table view cell..

    if selectedButtonIndex == -1 {
         //set button state for no button selected
    }
    else if selectedButtonIndex == indexPath.row {
         //enable button
    }
    else {
        //disable button
    }
}

答案 1 :(得分:0)

我会使用UITableView重载API来解决这个问题( reloadRowsAtIndexPaths:withRowAnimation: reloadSections:withRowAnimation:)。只需设置 cellForRowAtIndexPath:中所有按钮的启用状态,然后在重新加载表的部分之前修改有关这些状态的模型信息。尽量避免 reloadData

例如:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
cell.button.enable = yourModel.canDoSomething;
...
}


-(void)radioButtonDidChange:(UIButton *)Sender
{
    yourModel.canDoSomething = NO;
    [self.tableView reloadRowsAtIndexPaths:<indexPaths> withRowAnimation:UITableViewRowAnimationAutomatic];
}