56 votes

Comment désactiver une partie de UISegmentedControl ?

Voici le code pour UISegmentedControl

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects: [UIImage imageNamed:@"down.png"], [UIImage imageNamed:@"dList.png"], nil]];  

[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];  
segmentedControl.frame = CGRectMake(0, 0, 90, 65);  
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;  
segmentedControl.momentary = YES;  

UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];  

[segmentedControl release];  

self.navigationItem.rightBarButtonItem = segmentBarItem;  

[segmentBarItem release];    

y

- (void)segmentAction:(id)sender{
    if([sender selectedSegmentIndex] == 0)
    {
        button.hidden=NO;
    }
    else
    {
        [self dListMethod ];
    }
}

Dans la section if(), je veux désactiver selectedSegmentIndex==0 et l'activer lorsque button.hidden=YES

0 votes

Vous ne voulez pas que la ligne if([sender selectedSegmentIndex] == 0) à exécuter si button.hidden = NO ?

152voto

Deepak Danduprolu Points 33605

Utilisation setEnabled:forSegmentAtIndex: pour activer et désactiver les segments.

[segmentedControl setEnabled:NO forSegmentAtIndex:0];

si vous souhaitez désactiver le premier segment.

27voto

Victor Rius Points 2430

Pour ceux qui peuvent être intéressés par le rapide commande :

Swift 2.3

segmentedControl.setEnabled(false , forSegmentAtIndex: 0);

Swift 3

self.segmentedControl.setEnabled(false, forSegmentAt: 0);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X