2010-11-22 8 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

bookmarkButtonはUIButtonですか?直接代わりに(UIButton *)aBarButtonItem.customView経由で参照する必要がありますか?

それはUIButtonは、あなたが状態に基づいて画像を設定したいと思うの場合:あなたの代わりにすることを望む場合も同じAPIを持つsetBackgroundImageがあること- (void)setImage:(UIImage *)image forState:(UIControlState)state

注意を。プロパティとして - アイテム -

+0

bookmarkButtonはUIBarButtonItemがに設定されて動作するはずです:だからIBOutletプロパティとしてツールバーを設定した後、私はこのような...その配列に新しいボタンを挿入しなければなりませんでしたNIB。 – 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; 
関連する問題