2017-01-11 2 views
1

У меня есть два вида A & B, чтобы перейти от A к B. Я просто нажимаю новый вид, в виду, что BI преформирует некоторые действия, которые обновляют значок badgeValue элемента UIBarButton моей панели навигации. (Например, добавление элемента в корзину)Обновление вида A, которое было за точкой зрения B после нажатия кнопки «Назад» в навигационной панели, и отображается сообщение «В»

picture 30

Когда я вернусь, чтобы просмотреть с помощью кнопки Панели навигации Назад элемент UIBarButton показывает предыдущий badgeValue, а обновленные одного, я думаю, это происходит потому, что когда вы нажимаете кнопку «Назад», вид B открывается всплывающим видом A, который остается таким, каким он был без изменений, поэтому мне нужно, чтобы показать, как A может обновиться после возвращения.

picture 29

Если вместо того, чтобы идти назад, чтобы посмотреть, я вернуться к RootViewController badgeValue обновляется, я думаю, что, когда я иду в RootViewController код в viewDidLoad читается и badgeValue обновляется.

Любые идеи о том, как обновить представление, которое было за другим, которое только что появилось?

EDIT

@silicon_valley ответ правильный, но он не будет работать с библиотекой MikeMTOL, потому что он ошибочен, для пользователей Swift я рекомендовал бы эти расширения вместо этого. ->link

+1

Посмотрите учебное пособие по использованию разматывания segue. Это позволит вам передать данные обратно в предыдущий ViewController и обновить значок. – rMickeyD

+0

Вау, это было быстро! Спасибо, я проверю это –

ответ

2

Вы можете добавить свой код для обновления значка в viewWillAppear. Это позволит убедиться, что значение обновляется каждый раз, когда представление возвращается на экран (а не только в первый раз, когда оно создается).

+0

Я пытался сделать то, что вы сказали, но что это значит, так это то, что он полностью исчезает с badgeValue. Я в настоящее время обновление badgeValue в viewDidLayoutSubViews() метод: 'переопределение функ viewDidLayoutSubviews() {? вар numeroProducto = String (Carrito.numProd) navigationItem.rightBarButtonItem .badgeValue = numeroProducto }' это единственный способ сохранить его при нажатии на другой viewController, потому что, если я поместил его в viewDidLoad, он исчезнет после нажатия нового контроллера. –

+0

Итак, как и где вы создаете 'UIBarButtonItem'? Поведение, которое вы описываете, кажется нечетным ... –

+0

Я не создаю его, это стандартная стрелка кнопки «Назад», которую имеет панель навигации, единственное, что я сделал, это изменить значок по умолчанию для пользовательского, и я использую единый навигационный контроллер для всех просмотров после входа в систему. Я использую стандартную кнопку «назад», потому что я не хочу создавать кнопку для всех своих представлений и должен использовать селектор для каждого, чтобы выполнить функцию «назад», которая также «всплывает» в диспетчере представлений сверху. –

Смежные вопросы