处理UISegmentedControl上的单击

时间:2012-01-10 14:59:55

标签: ios uitableview uisegmentedcontrol

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 个答案:

答案 0 :(得分:4)

单击实际的分段控件不会导致didSelectRowAtIndexPath。相反,您需要添加目标,如下所示:

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

定义“action:”方法以响应事件。

- (void)action:(id)sender

然后将内部代码放入该动作方法中。