Я обычно создаю UIImageView, затем UITapGestureRecognizer и добавляю его в UIImageView, и, наконец, я создаю UIBarbuttonItem:
//UIImageView where the image is shown
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageName"]];
imageViewSettings.frame = CGRectMake(0, 0, 25, 25);
imageViewSettings.contentMode = UIViewContentModeScaleAspectFit;
//TapGesture
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(methodToTrigger)];
//Adding the gesture to the ImageView
[imageView addGestureRecognizer:tapGesture];
//Creating the barButtonItem
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:imageView];
//Finally add the button to the navigationBar
self.navigationItem.rightBarButtonItem = barButtonItem;