Search code examples
iosswiftuinavigationbaruinavigationitem

How to change UINavigationBar rightButton image?


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?


Solution

  • 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),
    };