Я не уверен, почему на этот вопрос никогда не отвечали, но если вы все еще ищете, просто создайте свойство для BarButtonItem в вашем .h, назначьте его в IB, затем установите свойство background этого barButtonItem.Работает нормально для меня и никогда не «возвращается к внешнему виду по умолчанию».
- (void)viewDidLoad
{
[super viewDidLoad];
[self.barButton setBackgroundImage:[UIImage imageNamed:@"YOURIMAGE"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}