2010-11-22 16 views
6

Ich versuche verschiedene Möglichkeiten, ein UIBarButtonItem-Bild zu ändern, sobald es gedrückt wurde, ohne Glück.Probleme beim Ändern eines Bildes von UIBarButtonItem

// bookmarkButton is a property linked up in IB 
-(IBAction)bookmarkButtonTapped:(id)sender 
{ 
NSLog(@"this action triggers"); 
// attempt 1 
UIBarButtonItem* aBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"bookmarkdelete.png"] style:UIBarButtonItemStylePlain target:self action:@selector(bookmarkButtonTapped:)]; 
bookmarkButton = aBarButtonItem; 
[aBarButtonItem release]; 

// attempt 2 
bookmarkButton.image = [UIImage imageNamed:@"bookmarkdelete.png"]; 
} 

Gibt es eine andere Möglichkeit, dies zu tun?

Antwort

2

Die Symbolleiste enthält ein Array - Elemente - als Eigenschaft. So, nachdem Sie die Symbolleiste als IBOutlet Eigenschaft einrichten, hatte ich eine neue Schaltfläche in das Array einfügen .. wie folgt aus:

NSMutableArray *items = [[NSMutableArray alloc] initWithArray:self.toolBar.items]; 
UIBarButtonItem *newButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"newButton.png"] style:UIBarButtonItemStylePlain target:self action:@selector(buttonTapped:)]; 
[items replaceObjectAtIndex:0 withObject:newButton]; 
self.toolBar.items = items; 
[newButton release]; 
[items release]; 
0

Ist bookmarkButton eine UIButton? Soll es statt direkt über (UIButton *)aBarButtonItem.customView referenziert werden?

Wenn es ein UIButton dann werden Sie das Bild auf zustandsbasierten festlegen möchten: - (void)setImage:(UIImage *)image forState:(UIControlState)state

Beachten Sie, dass es auch dann, wenn Sie wollen, dass stattdessen ein setBackgroundImage mit derselben API ist.

+0

bookmarkButton arbeiten sollte ein UIBarButtonItem in einem aufgerichteten ist FEDER. – cannyboy

-3

versuchen [bookmarkButton setImage:[UIImage imageNamed:@"bookmarkdelete.png"] forState:UIControlStateNormal];

+0

Ich bekomme einen Fehler 'UIBarButtonItem' reagiert möglicherweise nicht auf -setImage: forState: 'wenn ich das versuche. – cannyboy

+1

Dieser Code ist in der UIBarButtonItem-Klasse nicht vorhanden – filou

0

Diese

UIImage *normalButtonImage = [UIImage imageNamed:@"TableViewIcon"]; 
UIImage *selectedButtonImage = [UIImage imageNamed:@"CollectionViewIcon"]; 
CGRect rightButtonFrame = CGRectMake(0, 0, normalButtonImage.size.width, 
            normalButtonImage.size.height); 
UIButton *rightButton = [[UIButton alloc] initWithFrame:rightButtonFrame]; 
[rightButton setBackgroundImage:normalButtonImage forState:UIControlStateNormal]; 
[rightButton setBackgroundImage:selectedButtonImage forState:UIControlStateSelected]; 
[rightButton addTarget:self action:@selector(toggleTableView:) 
     forControlEvents:UIControlEventTouchDown]; 
self.toggleMediaView = [[UIBarButtonItem alloc] initWithCustomView:rightButton]; 
[self.navigationItem setLeftBarButtonItem:self.toggleMediaView]; 
self.navigationItem.leftBarButtonItem.enabled = NO; 
Verwandte Themen