0

I want to change UINavigationBar rightButton image in viewWillAppear and for this I'm trying this:

self.navigationController?.navigationItem.rightBarButtonItem?.image = UIImage(named: "bookmark")

but it does not change the image of my rightButton. How can I fix it and change my image?

John Doe
  • 811
  • 4
  • 14
  • 26

3 Answers3

1

try this

var changeImage:UIImage = UIImage(named: "bookmark")!
changeImage = changeImage.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
var rightButton = UIBarButtonItem(image: changeImage, style: UIBarButtonItemStyle.Bordered, target: self, action: "xxxx")
self.navigationItem.rightBarButtonItem = rightButton

Choice-2

for book mark use default function of UIBarButtonSystemItemBookmarks

var rightButton: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Bookmarks, target: self, action: "xxxx")
self.navigationItem.rightBarButtonItem = rightButton

some default UIBarbuttonItems are

typedef NS_ENUM(NSInteger, UIBarButtonSystemItem) {
UIBarButtonSystemItemDone,
UIBarButtonSystemItemCancel,
UIBarButtonSystemItemEdit,  
UIBarButtonSystemItemSave,  
UIBarButtonSystemItemAdd,
UIBarButtonSystemItemFlexibleSpace,
UIBarButtonSystemItemFixedSpace,
UIBarButtonSystemItemCompose,
UIBarButtonSystemItemReply,
UIBarButtonSystemItemAction,
UIBarButtonSystemItemOrganize,
UIBarButtonSystemItemBookmarks,
UIBarButtonSystemItemSearch,
UIBarButtonSystemItemRefresh,
UIBarButtonSystemItemStop,
UIBarButtonSystemItemCamera,
UIBarButtonSystemItemTrash,
UIBarButtonSystemItemPlay,
UIBarButtonSystemItemPause,
UIBarButtonSystemItemRewind,
UIBarButtonSystemItemFastForward,
UIBarButtonSystemItemUndo NS_ENUM_AVAILABLE_IOS(3_0),
UIBarButtonSystemItemRedo NS_ENUM_AVAILABLE_IOS(3_0),
UIBarButtonSystemItemPageCurl NS_ENUM_AVAILABLE_IOS(4_0),
};
Anbu.Karthik
  • 82,064
  • 23
  • 174
  • 143
0

self.navigationController?.navigationItem.rightBarButtonItem?.image= UIBarButtonItem(image: //Image Name, style: UIBarButtonItemStyle.Plain, target: self, action: //ACTION NAME)

Jenny
  • 11
  • 3
0

Try this, I am new to swift that's why i've done this code in Objective C.

UIButton *btnRight = [UIButton buttonWithType:UIButtonTypeCustom];


[btnRight setFrame : CGRectMake(0, 0, 60, 35)];

[btnRight setImage:[UIImage imageNamed:@"prefferedImage"] forState:UIControlStateNormal];
[btnRight addTarget:self action:@selector(defindeActionMethod:) forControlEvents:UIControlEventTouchUpInside];

[btnRight setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight];

btnRight.imageView.contentMode = UIViewContentModeScaleAspectFit;
btnRight.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
btnRight.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:btnRight];
[rightBarButton setTintColor:[UIColor whiteColor]];
self.navigationItem.rightBarButtonItem = rightBarButton;
Dhruvik
  • 984
  • 4
  • 18