2010-11-22 14 views
6

मैं किसी भी भाग्य के बिना दबाए जाने के बाद UIBarButtonItem की छवि को बदलने के विभिन्न तरीकों की कोशिश कर रहा हूं।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"]; 
} 

क्या ऐसा करने का कोई और तरीका है?

उत्तर

2

उपकरण पट्टी एक सरणी शामिल हैं - आइटम - एक संपत्ति के रूप में।

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

बुकमार्क बटन एक UIButton है? क्या इसे सीधे (UIButton *)aBarButtonItem.customView के माध्यम से संदर्भित किया जाना चाहिए?

यदि यह एक UIButton तो आप छवि राज्य के आधार पर सेट करना चाहेंगे है: - (void)setImage:(UIImage *)image forState:(UIControlState)state

नोट वहाँ भी एक ही एपीआई के साथ एक setBackgroundImage यह है कि अगर आपको लगता है कि बजाय चाहते हैं।

+0

bookmarkButton एक UIBarButtonItem एक में स्थापित है: तो एक IBOutlet संपत्ति के रूप में उपकरण पट्टी स्थापित करने के बाद, मैं इस तरह कि सरणी में एक नया बटन डालने के लिए .. था निब। – cannyboy

-3

कोशिश [bookmarkButton setImage:[UIImage imageNamed:@"bookmarkdelete.png"] forState:UIControlStateNormal];

+0

मुझे एक त्रुटि मिली 'UIBarButtonItem' -setImage का जवाब नहीं दे सकता: forState: 'जब मैं इसे आज़माता हूं। – cannyboy

+1

यह कोड UIBarButtonItem क्लास में मौजूद नहीं है – filou

0

यह काम करना चाहिए

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; 
संबंधित मुद्दे