Обработка нажатия на UISegmentedControl - PullRequest
0 голосов
/ 10 января 2012

Во UITableViewCell второй секции моего UITableView я определил UISegmentedControl, состоящий из двух кнопок:

if (indexPath.section == 1 && indexPath.row == 0)
{
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.accessoryType = UITableViewCellAccessoryNone;

    allerRetour = [[UISegmentedControl alloc] initWithItems: [NSArray arrayWithObjects:NSLocalizedString(@"Y aller", nil),                                  NSLocalizedString(@"En partir", nil), nil]];
    [allerRetour setFrame:CGRectMake(9.0f, 0.0f, 302.0f, 45.0f)];
    allerRetour.selectedSegmentIndex = 0;
    [cell addSubview:allerRetour];
}

return cell;

Теперь, когда я нажимаю на кнопку из этих двух кнопок в сегментированном элементе управления, я хочу отслеживать это, поэтому я пытаюсь это сделать в didSelectRowAtIndexPath, но это не работает (NSLog не отображается, поэтому событие не генерируется):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section==1 && indexPath.row==0)
    {   
        if (allerRetour.selectedSegmentIndex == 0)
        {
            labelModeRecherche.text=@"Départ"; 
            NSLog(@"Départ");
        }
        else
        {
            labelModeRecherche.text=@"Arrivée";   
            NSLog(@"Arrivée");
        }
    }
}

1 Ответ

4 голосов
/ 10 января 2012

Нажатие на фактический сегментированный элемент управления не вызовет didSelectRowAtIndexPath.Вместо этого вам нужно добавить цель, например:

[segmentedControl addTarget:self
                     action:@selector(action:)
           forControlEvents:UIControlEventValueChanged];

и определить метод "action:" для ответа на событие.

- (void)action:(id)sender

Затем поместить кодвнутри, если в этом методе действия.

...