Подвиды NavigationBar постоянно меняются, я имею в виду, что каждое представление появляется / исчезает, поэтому не следует ожидать, что добавленное изображение будет отображаться в индексе 0 массива subviews.
Вы можете попытаться добавить это в viewDidAppear (в каждом контроллере представления, который управляет элементами навигации /:):
NSLog(@"navbar's subviews before \n %@",[[[self navigationController] navigationBar] subviews]);
for (UIImageView *imgv in [[[self navigationController] navigationBar] subviews]) {
[[[self navigationController] navigationBar] sendSubviewToBack:imgv];
}
NSLog(@"navbar's subviews after \n %@",[[[self navigationController] navigationBar] subviews]);
Я использовал решение Хаука , но когда столбец отличается от других контроллеров, это может привести к небольшим проблемам, так или иначе, это не лучший вариант.
Надеюсь, это поможет, по крайней мере, понять, почему то, что вы делали, не работало,