Добавление переключателя в табличном представлении получило некоторую проблему - PullRequest
4 голосов
/ 18 ноября 2010

Я знаю, что у 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 выбрано ДА

btn в строке 2 будет btn.state=NO и не будет реагировать

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

Это будет выглядеть следующим образом alt text

Как установить условия if в - (IBAction)radioButton:(UIButton *)button

это изображениеподделка ... Я только добавил кнопку в ячейку ... и изменил цвет текста

Большое спасибо всем друзьям переполнения стека ~

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

ОК. Вот как я могу добавить кнопку в табличное представление: в tableviewController.h:

@interface RootViewController : UITableViewController {
    NSMutableArray *radioButtonArray;
}

@property (nonatomic ,retain)NSMutableArray *radioButtonArray;

в таблице viewController.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;
}
0 голосов
/ 18 ноября 2010

Вам понадобится массив всех переключателей.Помните, что ячейки таблицы перерабатываются / могут быть не видны и т. Д., Поэтому создайте массив только с помощью кнопок, а затем выделите правую кнопку из этого массива в вашем методе 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];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...