代码之家  ›  专栏  ›  技术社区  ›  mkul

嵌套表视图控制器段后缺少选项卡栏

  •  0
  • mkul  · 技术社区  · 7 年前

    enter image description here

    我的目标是显示 TABLE2 点击按钮后 VC1

    在做了segue from之后 VC1 TABLE1 然后 表2 我的标签栏不见了。我的故事板有问题,或者我只需要在完成segue后手动添加这个标签栏?我在做导航控制器的segue,然后从调用performsegue 表1 表2

    表2 Segue看起来像:

    enter image description here

    但看起来应该是:

    enter image description here

    代码 VC1 :

    class FirstViewController: UIViewController {
    
        @IBAction func performSegueTapped(_ sender: UIButton) {
            self.performSegue(withIdentifier: "segueFromMainWindow", sender: nil)
        }
    
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            if segue.identifier == "segueFromMainWindow" {
                let destinationNavigationController = segue.destination as! UINavigationController
                let targetController = destinationNavigationController.topViewController as? FirstTableViewController
                targetController?.performSegue(withIdentifier: "testSegue", sender: nil)
            }
        }
    }
    

    代码 表1 :

    class FirstTableViewController: UITableViewController {
    
        override func numberOfSections(in tableView: UITableView) -> Int {
            return 1
        }
    
        override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return 1
        }
    
        override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            performSegue(withIdentifier: "testSegue", sender: nil)
        }
    
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            let destCtrl = segue.destination as! SecondTableViewController
            destCtrl.testLabelText = "hello"
        }
    }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   kamil3    7 年前

    在main.storyboard中为secondtableviewcontroller设置自定义标识符,然后为按钮分配IBaction,如下所示:

    @IBAction func performSegueButtonTouched(_ sender: UIButton) {
        let tabBarViewControllers = tabBarController?.viewControllers
        let tableNavigationController = tabBarViewControllers?[1] as! UINavigationController
        let firstTableViewController = tableNavigationController.topViewController as! FirstTableViewController
        let mainStoryboard = UIStoryboard.init(name: "Main", bundle: nil)
        let secondTableViewController = mainStoryboard.instantiateViewController(withIdentifier: "SecondTableViewController") as! SecondTableViewController
        secondTableViewController.testLabelText =  "Something"
        tabBarController?.selectedIndex = 1
        tableNavigationController.setViewControllers([firstTableViewController, secondTableViewController], animated: true)
    }
    
        2
  •  0
  •   Swift_Dev    7 年前

    检查 表2 故事板中的viewcontroller。 确保取消选中“按下时隐藏底部栏”。

    或者尝试强制显示选项卡栏。

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            let destCtrl = segue.destination as! SecondTableViewController
            destCtrl.hidesBottomBarWhenPushed = false
            destCtrl.testLabelText = "hello"
    }
    

    enter image description here