在準備你的minimal, complete, and verifiable example,你注意到的問題是UISearchController
的存在。我注意到,即使我推到第二頁視圖控制器(過去與UISearchController
視圖控制器),該搜索控制器仍然存在:
如果設置isActive
到false
當視圖消失,這個問題就消失了。
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
searchController.obscuresBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationItem.searchController?.isActive = false
}
而且,當這樣做時,解僱按預期工作。
我的原始答案,建議您想關閉導航控制器,而不是呈現視圖控制器,如下。
如果您所呈現的導航控制器模態,然後推從那裏幾個視圖控制器,你不想解僱presentingViewController
,而是navigationController
,如:
navigationController?.dismiss(animated: true)
或者,或者,您的視圖控制器上創建一個展開行動要返回:
@IBAction func unwindHome(_ segue: UIStoryboardSegue) {
// this is intentionally blank
}
然後您可以創建一個展開塞古在興業e右:
或者,如果你必須以編程方式做到這一點,創建視圖控制器和「退出」出口之間的開卷SEGUE,然後你就可以performSegue(withIdentifier:sender:)
。
來源
2017-09-14 23:35:33
Rob
你確定這是綁定到完成按鈕的唯一代碼? – ramacode
是的,從故事板我可以驗證只有一個動作發送完成按鈕。完成按鈕也作爲插座存儲,以便在其他情況下可以禁用,但這不應該是相關的。 –
最初如何顯示此視圖控制器?後退箭頭的存在表明這是推動,而不是呈現。 – rmaddy