如何在UISegment iOS中选择其他段时取消选择一个段?

时间:2015-03-18 09:45:38

标签: ios iphone uisegmentedcontrol selected

这就是发生的事情,“男性”是主要的,所以它仍然被选中,当我选择“女性”时会发生这种情况,请告诉我为什么男性不会取消选择?

这就是我所做的连接段控制器为IBOutlet

@property (weak, nonatomic) IBOutlet UISegmentedControl *genderSelection;

然后在viewDidLoad: [

self.genderSelection addTarget:self action:@selector(MySegmentControlAction:) forControlEvents: UIControlEventValueChanged];

- (void)MySegmentControlAction:(UISegmentedControl *)segment
{
    if(segment.selectedSegmentIndex == 0)
    {
        // code for the first button
        NSLog(@"MALE");
    }
    else if(segment.selectedSegmentIndex == 1)
    {
        NSLog(@"Female");
    }

这是我的属性检查员:

enter image description here

3 个答案:

答案 0 :(得分:1)

您必须在选择中取消选择其他细分"如果"。

所以

- (void)MySegmentControlAction:(UISegmentedControl *)segment
{
    if(segment.selectedSegmentIndex == 0)
    {
        //You can use    segment.selectedSegmentIndex = 0;  instead
        [segment setSelectedSegmentIndex:0];
        // code for the first button
        NSLog(@"MALE");
    }
    else if(segment.selectedSegmentIndex == 1)
    {
        //You can use    segment.selectedSegmentIndex = 1;  instead
        [segment setSelectedSegmentIndex:1];
        NSLog(@"Female");
    }

所以你可以在0和0之间切换1无限期。

如果您使用更有活力的选择,甚至可能会更好,正如Mrunal

所建议的那样
[segment setSelectedSegmentIndex:segment.selectedSegmentIndex];

答案 1 :(得分:0)

只需取消选择else If中的第一个:

if(segment.selectedSegmentIndex == 0)
{
    // code for the first button

    NSLog(@"MALE");

}
else if(segment.selectedSegmentIndex == 1)
{
    NSLog(@"Female");

    [segment setSelectedSegmentIndex:1];



}

答案 2 :(得分:-1)

- (void)MySegmentControlAction:(UISegmentedControl *)segment
{
    if(segment.selectedSegmentIndex == 0)
    {
        NSLog(@"MALE");
    }
    else if(segment.selectedSegmentIndex == 1)
    {
        segment.selectedSegmentIndex=1;  // this will make female selected.

    }
}