可以說,我有3個視圖控制器:A
,B
,C
,全部嵌入到導航控制器中。 A
和B
有一個導航欄,C
沒有。交互式轉換:導航欄外觀問題
我有一個自定義的B
和C
之間的交互轉換。因爲我需要我的導航欄上C
消失了,我實現的UINavigationControllerDelegate
此功能:
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
if viewController is C {
navigationController.setNavigationBarHidden(true, animated: animated)
}
else {
navigationController.setNavigationBarHidden(false, animated: animated)
}
}
一切完美的作品在常見的場景,當我只能讓推抵扣的轉變。
但是,當我取消過渡B
- 通過我的UIPercentDrivenInteractiveTransition
調用cancel()
>C
,在導航欄上不B
露面。在這裏,我必須撥打setNavigationBarHidden(false, ...)
,但我沒有設法找到正確的位置。
如果我把它在B
的viewWillAppear
,出現導航欄,但看起來真的很奇怪 - 它包含它是否有導航欄上的C
必須的元素。如果我彈回到A
,它會閃爍片刻並顯示預期的內容,但在轉換後立即將A
導航欄替換爲B
導航欄!
所以,好像導航欄棧後B
不知何故破 - >C
過渡消除,這似乎是相對轉移到viewcontrollers這樣的:
has
-----------------------------------------------
| ViewController | Navigation bar of |
-----------------------------------------------
| A | B |
-----------------------------------------------
| B | C |
-----------------------------------------------
所以,我的問題是,什麼是正確的在這種情況下撥打navigationController.setNavigationBarHidden(false, animated: true)
的地方?