代码之家  ›  专栏  ›  技术社区  ›  Emily Stremel

准备(用于:发送方:)在从按钮切换到选项卡栏控制器的过程中不被调用(在Swift 4中,Xcode 9)

  •  0
  • Emily Stremel  · 技术社区  · 7 年前

    我正在写一个有两个标签的应用程序。在第一个选项卡中,用户选择一些设置。然后,他们单击第二个选项卡,根据第一个选项卡中的设置随机绘制和显示卡片。在第二个选项卡的视图底部,有一个“改组”按钮。我使用覆盖的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
            }
        }
    }
    }
    

    编辑添加:如果有其他方法可以达到预期效果,我很乐意改用它。

    1 回复  |  直到 7 年前
        1
  •  0
  •   matt    7 年前

    您已经将您的实现 prepare(for:) 方法在错误的类中。它位于源代码视图控制器中,源代码视图控制器是绘图卡视图控制器,而不是选项卡栏视图控制器。