Я возвращаю фоновое изображение навигационной панели, вызывая setBackgroundImage
при показе MFMailComposeViewController
. Но когда я пытаюсь сбросить изображение до его оригинала, вызывая setBackgroundImage
второй раз в mailComposeController:didFinishWithResult:
, он не заметно меняет фоновое изображение.UINavigationBar setBackgroundImage иногда не принимает немедленного эффекта
Странная вещь, что журнал показывает мне, что фоновое изображение в Панели навигации по имеет изменилось, и после того, как я поп несколько представлений контроллеров (я не уверен, являются модальными переходами и которые не являются, потому что кто-то еще код), фон изображение наконец делает изменение. Но почему это не меняется сразу?
Вот мой соответствующий код внутри mailComposeController:didFinishWithResult:
:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"img"]
forBarMetrics:UIBarMetricsDefault];
NSLog(@"Navbar img = %@", [[UINavigationBar appearance]
backgroundImageForBarMetrics:UIBarMetricsDefault]);
Спасибо, @Alex, за помощь. Я не уверен, что он вызывается в основном потоке, но добавление блока 'dispatch_async' внутри' mailComposeController: didFinishWithResult' не изменило поведения. – Josh
@Josh Это было достойное внимание :) Другое место, которое я бы хотел, чтобы убедиться, что вы устанавливаете фоновое изображение, после того, как вы отменили почтовый коммандер и после того, как ваш собственный контроллер представления имеет снова активизируется. –
Это сработало для меня! Трюк состоял в том, чтобы вызвать 'setBackgroundImage' внутри' viewWillAppear' в контроллере представления, который вызвал mailComposeController. Можете ли вы опубликовать его в качестве ответа, чтобы я мог его принять? – Josh