我想關閉當前不在頂部的視圖控制器。
我展示了一個視圖控制器,當我展示它時,我希望關閉前一個。
為了提供更多詳細資訊,這是我在到達 CI 時遵循 A -> B -> C 的路徑,希望 B 被關閉。
uj5u.com熱心網友回復:
除了此處的其他答案,您還可以使用
navigationController.viewControllers.remove(at: 1)
編輯:
您可以使用 UINavigationController 來控制 ViewController 的堆疊。
let viewControllerA = UIViewController()
let viewControllerB = UIViewController()
let viewControllerC = UIViewController()
let navigationController = UINavigationController(rootViewController: viewControllerA)
navigationController.pushViewController(viewControllerB, animated: true)
navigationController.pushViewController(viewControllerC, animated: true)
// Remove B
navigationController.viewControllers.remove(at: 1)
uj5u.com熱心網友回復:
這在一定程度上取決于您如何進行導航。如果您使用的是導航控制器,則可以訪問視圖控制器陣列并直接對其進行操作。例如,
navigationController.viewControllers.popLast() //removes the last view controller and gives you a reference to it if you need.
如果您正在使用 segues,則可以在移至 C 之前轉回 viewController A。
您還可以使用它以其他方式操作 viewController 堆疊。
您還可以使用 self.dismiss(animated: true) 讓視圖控制器自行關閉。
如果你有興趣,我發現 Coordinator Pattern 是 iOS 解決很多導航問題的一個非常好的方法。
如果您想發布一些代碼,我可以為您仔細查看。
uj5u.com熱心網友回復:
您可以使用 UIViewController 的 presentingViewController 屬性來訪問呈現此 VC 的 VC。這樣你就可以解雇以前的VC。
/// lets present vc2 from vc 1
let vc1 = UIViewController()
let vc2 = UIViewController()
vc1.present(vc2, animated: true)
/// presentingViewController of vc2 will be vc1, and it will dismiss if presented modally.
vc2.presentingViewController?.dismiss(animated: true)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/522252.html
上一篇:檢測按鈕組的onChange
下一篇:從userDefaults.standard.sring(forKey"name").components(seperatedby:"")我想制作一個串列
