2010-11-18 8 views
1

Existe-t-il un moyen de masquer ou d'afficher un UIBarButtonItem?iPad - Afficher/Masquer UIBarButton

+0

Nous pouvons cacher élément de navigation en définissant sa propriété à zéro et chaque fois que nous voulons montrer que nous pouvons alors il suffit d'écrire dans un état afin que nous puissions afficher le bouton. – AppAspect

Répondre

3

Utilisez-le pour masquer l'élément de la barre.

self.navigationItem.rightBarButtonItem = nil;

2

En fait, UIBarButtonItem ne répond pas à .hidden. Ce n'est pas une sous-classe de UIButton.

Voici un exemple rapide de la façon dont vous pouvez commuter trois boutons: un bouton gauche, un bouton central et un bouton droit.

// Ainsi, au bon endroit

IBOutlet UIToolbar *bottomToolbar; 
IBOutlet UIBarButtonItem *leftButton; 
IBOutlet UIBarButtonItem *flexerSpace; 
IBOutlet UIBarButtonItem *middleButton; 
IBOutlet UIBarButtonItem *rightButton; 

// Alors ce au bon endroit

@property (retain, nonatomic) IBOutlet UIToolbar *bottomToolbar; 
@property (retain, nonatomic) IBOutlet UIBarButtonItem *leftButton; 
@property (retain, nonatomic) IBOutlet UIBarButtonItem *flexerSpace; 
@property (retain, nonatomic) IBOutlet UIBarButtonItem *middleButton; 
@property (retain, nonatomic) IBOutlet UIBarButtonItem *rightButton; 

// Puis au bon endroit

@synthesize bottomToolbar; 
@synthesize leftButton; 
@synthesize flexerSpace; 
@synthesize middleButton; 
@synthesize rightButton; 

puis rechargent votre classe dans IB ou Xcode4 IB dans votre plume

// puis dans votre

view_switcher/méthodes de régulation

-(IBAction)switchToLeft:(id)sender { 

NSArray *newButtonArray = [NSArray arrayWithObjects: middleButton, flexerSpace, rightButton, nil]; 

[bottomToolbar setItems:newButtonArray animated:NO]; //YES or NO either way it 
} 

-(IBAction)switchToMiddle:(id)sender { 

NSArray *newButtonArray = [NSArray arrayWithObjects: leftButton, flexerSpace, rightButton, nil]; 

[bottomToolbar setItems:newButtonArray animated:NO]; //YES or NO either way it 
} 

-(IBAction)switchToRight:(id)sender { 

NSArray *newButtonArray = [NSArray arrayWithObjects: leftButton, flexerSpace, middleButton, nil]; 

[bottomToolbar setItems:newButtonArray animated:NO]; //YES or NO either way it 
} 

puis connectez les boutons et ajoutez votre changement de vue, cela devrait le faire ...

En supposant que vous pouvez remplir certaines parties

1

Voici ma sous-classe UIBarButtonItem pour exposer une méthode setHidden. Je l'utilise quand j'ai un bouton "optionnel" sur mes barres. Fonctionne pour les boutons textuels ou image.

class AltoUIBarButtonItem: UIBarButtonItem { 

var originalImage : UIImage? 
var originalTitle : String? 

override func awakeFromNib() { 

    originalTitle = self.title 
    originalImage = self.image 
} 

func setHidden(_ hidden: Bool) 
{ 
    if hidden 
    { 
     if originalImage != nil { self.image = nil} 
     if originalTitle != nil { self.title = ""} 
     self.isEnabled = false 
    } 
    else 
    { 
     if originalImage != nil { self.image = originalImage} 
     if originalTitle != nil { self.title = originalTitle} 
     self.isEnabled = true 
    } 
} 

func setOriginalTitle(_ originalTitle: String?) 
{ 
    self.originalTitle = originalTitle 
} 

}