swift 3 Second TableView segue未显示在导航控制器

时间:2017-06-29 21:15:02

标签: ios swift3 uinavigationcontroller

编辑2:在底部添加了半解决方案。仍然可以使用完整的解决方案

编辑1:添加图像。

我需要帮助修复第二和第三个tableview之间的导航。

我有一个导航控制器和三个表视图。前两个显示正常,点击动态tableview单元>在第一个tableview中移动到第二个tableview。然而,第二个tableview cell vvron>虽然在故事板中设置(附件:Disclosure Indicator)在运行时没有显示,因此点击它不会移动到第三个表视图。我需要帮助解决这个问题。

在每种情况下,我按Ctrl键将单元格链接到storyboard中的下一个tableview,并在之前的tableview控制器中准备segue。然而,只有一个工作,另一个似乎是孤儿。

如果您可以建议一个清单,以确保导航控制器在三个有用的表视图中工作。不知道要显示什么代码所以我会发布两个segues。但这可能不是一个棘手的问题,所以我不知道。

第一个tableview Weeks工作转到第二个tableview联赛。根据点击的内容加载json文件。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "toLeagues"
    {
            let leaguesController = segue.destination as! LeaguesViewController
            // pass the selected row
            let selectedRow = self.tableView.indexPath(for: sender as! UITableViewCell)!.row
            if selectedRow == 0
            {
                leaguesController.weekFileName = "sports_week_1"
            }
            else
            {
                leaguesController.weekFileName = "sports_week_2"
            }
    }

但是第二次查看联赛并没有进入第三次观看比赛

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "toGames"
    {

        let gamesController = segue.destination as! GamesViewController
        // pass the selected row
        let selectedRow = self.tableView.indexPath(for: sender as! UITableViewCell)!.row

        gamesController.gameName = selectedRow.description
    }
}

编辑1:添加图片:

在第一张桌面视图中开始罚款......
starts off fine, get > to move to next view

在第二个tableview中停止此处,无法移至第三个tableview enter image description here

编辑2:半解决方案

我找到了一半解决方案。菜单项现在打开新视图,仅在事后显示V形符号。 didSelectRowAt直接添加缺少的披露指标并转到新的视图控制器。找不到带有IndexPath的viewWillAppear,所以我选择了didSelectRowAt。至少点击时工作。只是初始加载时缺少披露指标。如何在视图运行之前加载accessoryType?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        let cell = tableView.cellForRow(at: indexPath)
        cell?.accessoryType = .disclosureIndicator

        // force menu to move to GamesViewController
        let myGamesView = self.storyboard!.instantiateViewController(withIdentifier: "gamesView")
        self.navigationController?.pushViewController(myGamesView, animated: true)
    }

1 个答案:

答案 0 :(得分:0)

尝试在accessoryType而不是cellForRowAt设置didSelectRowAt

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "yourIdentifier") as! YourCustomCell

    //Your other code
    cell.accessoryType = .disclosureIndicator
    return cell 
}