我知道xcode没有单选按钮
所以我尝试添加一个自定义按钮,使其像单选按钮一样动作
这是我使用的图像
这是我设置为单元格的代码
UIButton *but = [UIButton buttonWithType:UIButtonTypeCustom];
[but setImage:[UIImage imageNamed:@"radio-off.png"] forState:UIControlStateNormal];
[but setImage:[UIImage imageNamed:@"radio-on.png"] forState:UIControlStateSelected];
[but setFrame:CGRectMake(0, 0, 44, 44)];
[but addTarget:self action:@selector(radioButton:) forControlEvents:UIControlEventTouchUpInside];
cell.accessoryView= but;
这是我想问的问题
如何在- (IBAction)radioButton:(UIButton *)button
控制两行中的两个单选按钮
如果选择了第1行单选按钮为是
第2行中的 btn将为btn.state=NO
,并且不会响应
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
就像这张照片
如何在- (IBAction)radioButton:(UIButton *)button
这张照片是假的......我只在单元格中添加按钮...并更改了文字颜色
非常感谢所有堆叠溢出的朋友〜
答案 0 :(得分:1)
好的..我在桌面视图中添加按钮的方法如下: 在tableviewController.h中:
@interface RootViewController : UITableViewController {
NSMutableArray *radioButtonArray;
}
@property (nonatomic ,retain)NSMutableArray *radioButtonArray;
tableviewController.h.m中的
- (void)viewDidAppear:(BOOL)animated {
radioButtonArray = [NSMutableArray new];
for (int i = 0; i < 30; i ++) {
UIButton *radioButton = [UIButton buttonWithType:UIButtonTypeCustom];
[radioButton setImage:[UIImage imageNamed:@"radio-off.png"] forState:UIControlStateNormal];
[radioButton setImage:[UIImage imageNamed:@"radio-on.png"] forState:UIControlStateSelected];
[radioButton setFrame:CGRectMake(0, 0, 44, 44)];
[radioButton addTarget:self action:@selector(radioButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[radioButtonArray addObject:radioButton];
}
[super viewDidAppear:animated];
}
并给它一个(IBAction)无效
- (IBAction)radioButtonPressed:(UIButton *)button{
[button setSelected:YES];
// Unselect all others.
for (UIButton *other in radioButtonArray) {
if (other != button) {
other.selected=NO;
}
}
}
比将按钮添加到单元格中
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.accessoryView = [radioButtonArray objectAtIndex:[indexPath row]];
// Configure the cell.
return cell;
}
答案 1 :(得分:0)
您需要一个包含所有单选按钮的数组。请记住,表格单元格被回收/可能看不到等等。因此,只需使用按钮创建一个数组,然后在tableView:cellForIndexPath:
方法中从该数组中取出右键。
因此,在您的tableView:cellForIndexPath:
方法中,您可以执行以下操作:
cell.accessoryView = [myButtonArray objectAtIndex:[indexPath row]];
然后,在你的radioButton:
radioButtonPressed:
方法中,你会这样做:
// Select the pressed button.
[button setSelected:YES];
// Unselect all others.
for (UIButton *other in myButtonArray) {
if (other != button) {
[other setSelected:NO];
}
}