我正在写一个有两个标签的应用程序。在第一个选项卡中,用户选择一些设置。然后,他们单击第二个选项卡,根据第一个选项卡中的设置随机绘制和显示卡片。在第二个选项卡的视图底部,有一个“改组”按钮。我使用覆盖的prepare(for:sender:)函数将按钮分段到(自定义)uitabarviewcontroller,指示它立即返回到第二个选项卡。在阅读了几个同样的问题后,我确信我做的每件事都是正确的,根据所有的答案,它是正确的
应该
工作
然而,它只进入第一个选项卡。我可以再次单击第二个选项卡,它正在重新排列,并正确显示一组新卡,因此没有问题。但是,无论何时单击“改组”按钮,都不会调用prepare(),因此它会转到第一个选项卡而不是第二个选项卡。为什么不调用prepare()?
以下是我的故事板和代码:
storyboard
class MainTabBarViewController: UITabBarController {
// var nextViewNumber = Int()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "reshuffleSegue") {
if let tabVC = segue.destination as? UITabBarController {
tabVC.selectedIndex = 2
}
}
}
}
编辑添加:如果有其他方法可以达到预期效果,我很乐意改用它。