我的故事板布局如下:
应用启动时,它会在TabIndex 1转到HomeView VC
。
在HomeView
中,我有一个按钮,我使用来选择TestView
performSegue(withIdentifier: "goToStartTest", sender: self)
现在,我想从TestView
转到HistoryView
。我现在看到的唯一方法是创建一个从TestView
到TabBarController
的segue。这样会弹出HomeView
,而标签栏保持不变。我是从TestView
使用
performSegue(withIdentifier: "testToRes", sender: self)
但是,这使我留在HomeView
上,我需要HistoryView
。
我所做的研究指向使用Unwind并检测segue的来源并采取相应的措施。
任何指针/示例将不胜感激。
我在Swift 5中使用最新的Xcode。
答案 0 :(得分:2)
像这样设置python -m pip install request
:
HomeViewController
在您的class HomeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
var goToHistory = false
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if goToHistory {
goToHistory = false
// Use whichever index represents the HistoryViewController
self.tabBarController?.selectedIndex = 1
}
}
@IBAction func unwindAndGoToHistory(_ segue: UIStoryboardSegue) {
goToHistory = true
}
}
中,或者:
将TestViewController
连接到UIButton
图标以展开到Exit
。
OR
通过将unwindAndGoToHistory:
图标连接到View Controller
图标(再次选择Exit
)来创建程序化的展开,然后在 Document Outline中找到此标签视图,并在 Attributes Inspector 中为其提供一个标识符,例如unwindAndGoToHistory:
。准备好进行搜寻时,请使用"unwindToHistory"
触发它。
然后,当触发取消同步时,iOS将弹出performSegue(withIdentifier: "unwindToHistory", sender: self)
并调用TestViewController
。在那里,unwindAndGoToHistory()
被设置为goToHistory
。之后,true
将被触发。由于viewWillAppear()
现在是goToHistory
,因此代码将设置true
的{{1}}切换到selectedIndex
的标签。
注意:这会将展开动画显示回
tabBarController
,然后视图将自动切换到HistoryViewController
。如果 相反,您想立即切换到HomeViewController
动画,请覆盖HistoryViewController
而不是HistoryViewController
。
答案 1 :(得分:0)
要从TestView转到HistoryView,应遵循以下原则:
// From TestView to HomeView(0)
navigationController?.popViewController(animated: true)
// Change the active tab in the tabcontroller
(navigationController?.presentingViewController as? UITabBarController)?.selectedIndex = 1