我正在动态创建单选按钮。如果我单击一个按钮,那么我想将其余按钮更改为禁用
-(void)RadioButton:(UIButton *)Sender
{
int i=Sender.tag;
}
在此方法中,我只能更改点击的按钮图像。
答案 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];
}