【问题标题】:Push And Present View Controller推送和呈现视图控制器
【发布时间】:2019-03-28 11:44:14
【问题描述】:

我使用导航控制器作为根视图控制器,并在启动应用程序时出现一个 ViewController VC1,它有一个按钮,按下时(在 segue 的帮助下)将您带到具有表格视图和 5 个单元格的 VC2,现在我想使用 push 而不是 Segue 或提供从 VC2 转到 VC3 的模式(单击单元格)。

我用过

let displayVC : ForWebViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ForWebViewController") as! ForWebViewController


self.navigationController?.pushViewController(displayVC, animated: false)

代码已放置在第一个单元格的单击操作下,但没有任何反应。
谁能帮忙

【问题讨论】:

  • VC3 没有任何 UINavigation 控制器,因此首先,在 VC3 之前添加 UINavigationController 然后尝试将视图控制器推送到此导航堆栈中。
  • 尝试在代码的最后一行打断点,可能没有执行。
  • 检查你的 navigationController 是否像 if self.navigationController != nil 那样为空。它不应该是零
  • Arik Segal 谢谢,但线路正在执行
  • Abdulrehman-warraich 它是零怎么办?

标签: ios xcode cocoa-touch navigation swift4


【解决方案1】:

目标 C:

PulseNavigationController * VC3 =(PulseNavigationController*)navigationcontroller;

[homeNavictrl pushViewController:VC3 animated:YES];

迅速:

let VC3 = NewViewController()

self.navigationController?.pushViewController(VC3, animated: true)

【讨论】:

    【解决方案2】:

    可能是您面临问题的原因之一。请检查以下几点:

    1.您是否将tableViewdelegate 设置为VC2。你可以在storyboard 本身或者VC2viewDidLoad() 里面做,写下面的代码:

    self.tableView.delegate = self
    

    2.检查navigationController实例是否不是下面代码中的nil

    self.navigationController?.pushViewController(displayVC, animated: false)
    

    【讨论】:

      【解决方案3】:

      使用此代码和您的故事板 ID

      func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
          print(indexPath.section, indexPath.row)//It will print index and section
          let hvc = self.storyboard?.instantiateViewController(withIdentifier: "Your Storyboard ID") as! ForWebViewController//Here replace your class name
          self.navigationController?.pushViewController(hvc, animated: true)
      }
      

      【讨论】:

      • 按下导航控制器后是 VC1,但 VC1 上的按钮在 Segue 的帮助下工作以转到 VC2,所以这里连接中断,因此当我们尝试转到 VC3 时推送不起作用来自VC2
      • 我听不懂
      • 我的意思是说,总共有 3 个带有一个导航控制器的 VC,导航控制器是初始视图控制器,在启动应用程序时 VC1 打开,因此它直接与导航控制器链接,现在有一个VC1 上的按钮将您带到 VC2,但按钮在 segue 的帮助下起作用,而不是推动,因此连接(导航控制器和 VC2 之间)不再存在。重点是我们目前在点击按钮后在 VC2 上,我们想去 VC3 但在 Push 的帮助下,我们该怎么做?
      • 这不是你有多少导航控制器的问题,而是哪个VC拥有那个导航控制器。第一个 VC 需要导航控制器。够了……
      • 看,第一个 VC 有没有导航控制器?,你能从 VC1 导航到 VC2 吗?(如果是的话没问题)。
      【解决方案4】:
      • 确保您有一个导航控制器
      • 确保 displayVC 已正确实例化

      let displayVC : ForWebViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ForWebViewController") as! ForWebViewController
      
      present(displayVC, animated: true, completion: nil)
      

      navigationController?.pushViewController(displayVC, animated: true)
      

      【讨论】:

        【解决方案5】:

        以编程方式添加导航控制器

        let navController = UINavigationController.init(rootViewController: VC2)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多