我有一個標籤欄控制器(帶有底部菜單),也是一個頂部菜單。問題是我不想將黃色和綠色視圖鏈接到標籤欄(因爲用戶將使用頂部菜單而不是底部菜單來更改視圖)。顯示已經在導航堆棧上的視圖控制器
我有一個問題,每次我點擊按鈕的視圖的新實例將堆棧(所以我最終有類似V1 - > V2 - > V3 - > V2 - > V4等等上)
我的部分解決方案是這樣的:
@IBAction func yellowViewButtonAction(_ sender: AnyObject)
{
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "YelloViewController") as! YelloViewController
if let viewControllers = navigationController?.viewControllers {
for viewController in viewControllers {
// some process
if viewController is YelloViewController {
print("View is on stack")
}
}
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "YelloViewController") as! YelloViewController
self.navigationController?.pushViewController(controller, animated: false)
}
}
我可以看到的看法是對導航堆棧,因爲for
內if
語句是true
。問題是,我如何檢索它而不是推送同一視圖的新實例? (因爲除了現在這個龐大的內存問題,我也失去了我對視圖的任何數據)。
我想保留堆棧中的所有內容。
實施例:
V1 - > V2 - > V3 - > V4(當前視圖)
如果我回到V1從V4我仍然希望有V4,V3及V2導航控制器上疊加。
另一個問題是,如果這種解決方案是蘋果可能拒絕的東西。
我很感激任何幫助。
我需要導航控制器,因爲當我按下黃色和綠色的意見我還是能看到底部欄菜單。就像我說過的,我希望視圖保持不變,如果我彈出,我將丟失視圖上的所有數據。 – Adrian
您不需要導航控制器即可查看底部的菜單欄。看看鏈接中的教程,你會看到:)另外,我提供的代碼僅移動視圖,以便這些視圖控制器的「內部」狀態保持不變。 – repoguy
即時通訊試圖說的是我不想自定義底部菜單欄,因爲我已經有一個。我希望能夠在導航控制器堆棧中的視圖之間切換。 – Adrian