在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");
}
}
}
答案 0 :(得分:4)
单击实际的分段控件不会导致didSelectRowAtIndexPath。相反,您需要添加目标,如下所示:
[segmentedControl addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventValueChanged];
定义“action:”方法以响应事件。
- (void)action:(id)sender
然后将内部代码放入该动作方法中。