2009-05-17 7 views
2

créer une vue personnalisée à droite comme suit:Désactivation de la vue de droite personnalisée UINavigationItem?

// Build the Segmented Control 
NSArray *segmentTextContent = [NSArray arrayWithObjects:[UIImage imageNamed:@"arrow-dice.png"], [UIImage imageNamed:@"arrow-up.png"], [UIImage imageNamed:@"arrow-down.png"], nil]; 
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentTextContent]; 

// Customize the Segmented Control 
segmentedControl.momentary = YES; 
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
[segmentedControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged]; 

Puis-je ajouter à ma barre de navigation comme suit:

// Add the control to the navigation bar right item 
UIBarButtonItem *segmentItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl]; 
[segmentedControl release]; 
self.navigationItem.rightBarButtonItem = segmentItem; 
self.navigationItem.rightBarButtonItem.title = @""; 
[segmentItem release]; 

je peux le cacher comme suit:

self.navigationItem.rightBarButtonItem.customView.hidden = NO; 

QUESTION ... mais comment puis-je désactiver tout (ou mieux, un élément spécifique) du contrôle segmenté?

Ce qui suit ne fonctionne pas.

self.navigationItem.rightBarButtonItem.enabled = NO; 

... Toutes les idées appréciées

Merci,
mat

Répondre

5

UISegmentedControl.h

- (void)removeSegmentAtIndex:(NSUInteger)segment animated:(BOOL)animated; 
- (void)removeAllSegments; 
- (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment;  //default is YES 

    e.g. [segmentedControl setEnabled:NO forSegmentAtIndex:1]; 

Hope qui aide

+0

Merci, j'avais manqué ça dans les docs. Existe-t-il un moyen plus simple de désactiver le contrôle entier plutôt que de le faire pour chaque segment à tour de rôle? –

+0

C'est une sous-classe de UIControl, donc vous devriez pouvoir faire segmentedControl.enabled = NO ;. Dans le code que vous avez présenté ci-dessus, vous devez ajouter ".customView" après "rightBarButtonItem" et avant ".enabled". –

+0

Cela n'a pas fonctionné pour moi, malheureusement. Enabled n'est pas une propriété valide de CustomView. –

0
[navItem.rightBarButtonItem setEnabled:NO]; 

aussi simple que cela :)

Référence: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIBarItem_Class/Reference/Reference.html Voir la a permis propriété.

+0

Cela ne fonctionne que pour le premier élément, par ex. rightBarButtonItem. Si vous avez plus d'éléments dans un tableau "rightBarButtonItems" que vous devez désactiver chaque élément manuellement. Voir ceci: http://stackoverflow.com/q/20013762/384864 –

Questions connexes