在Tableview中添加单选按钮遇到了一些问题

时间:2010-11-18 10:16:58

标签: iphone cocoa-touch uitableview radio-button

我知道xcode没有单选按钮

所以我尝试添加一个自定义按钮,使其像单选按钮一样动作

这是我使用的图像 alt text alt text

这是我设置为单元格的代码

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

就像这张照片 alt text

如何在- (IBAction)radioButton:(UIButton *)button

中设置if条件

这张照片是假的......我只在单元格中添加按钮...并更改了文字颜色

非常感谢所有堆叠溢出的朋友〜

2 个答案:

答案 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];
    }
}