В случае, если у кого-то все еще есть проблемы с быстрым обратным перемещением , аннулируется ошибка , как @fabb прокомментировал в принятом ответе.
Мне удается исправить это путем переопределения viewDidLayoutSubviews
, в дополнение к viewWillAppear/viewWillDisappear
, как показано ниже:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)
}
//*** This is required to fix navigation bar forever disappear on fast backswipe bug.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.navigationController?.setNavigationBarHidden(false, animated: false)
}
В моем случае, я заметил, что это потому, что контроллер корневого представления (где nav скрыт), а контроллер push-представления (показан nav) имеет разные стили строки состояния (например, темный и светлый). В тот момент, когда вы запускаете обратную прокрутку, чтобы открыть контроллер представления, появится дополнительная цветовая анимация строки состояния. Если вы отпустите палец, чтобы отменить интерактивное всплывающее окно, , пока анимация строки состояния не завершена , панель навигации исчезнет навсегда!
Однако эта ошибка не возникает, если стили строки состояния обоих контроллеров представления одинаковы.
Из man system
:
Не использовать
system ()
из программы с set-user-ID или set-group-ID привилегии, потому что странные значения для некоторых переменных среды могут использоваться для нарушения целостности системы. Вместо этого используйте семейство функцийexec (3)
, но неexeclp (3)
илиexecvp (3)
.system ()
фактически не будет работать должным образом из программ с привилегиями set-user-ID или set-group-ID в системах, в которых/ bin / sh
является bash версии 2. , поскольку bash 2 теряет права при запуске.
И из man bash
:
Если оболочка запускается с эффективным идентификатором пользователя (группы), не равным реальному идентификатору пользователя (группы), а параметр
-p
не предоставляется, файлы запуска не читаются,