【问题标题】:Programmatically changing View Controllers without Navigation Controller Swift在没有导航控制器的情况下以编程方式更改视图控制器 Swift
【发布时间】:2015-03-18 20:57:59
【问题描述】:

当我按下按钮而不使用导航控制器时,我想切换到新的视图控制器,但我似乎无法做到这一点。我到处寻找答案,但我发现的所有东西要么在objective-c中,要么使用导航控制器,要么根本不工作。

func gunsoutButtonPressed(sender:UIButton!) {
    print("yay\t")
    //let encounterVC:AnyObject! = self.storyboard?.instantiateViewControllerWithIdentifier("ecounterViewController")
    //self.showViewController(encounterVC as UIViewController, sender: encounterVC)
    let encounterViewController = self.storyboard.instantiateViewControllerWithIdentifier("encounterViewController") as encounterViewController
    self.pushViewController(encounterViewController, animated: true)
}

【问题讨论】:

  • 如果您不想要导航控制器,为什么要在代码中使用 pushViewController?那是一种导航控制器方法。您需要阅读“iOS 视图控制器编程指南”以了解您在做什么。
  • 我在下面发布了一个答案,但我建议在这里提问之前先做一些研究,那里有大量视频。

标签: ios xcode swift uiviewcontroller xcode6


【解决方案1】:

你必须连接你想使用的两个 ViewController。然后根据需要命名segue,然后使用以下代码触发segue(在IBAction或其他内容中)。它不是完全以编程方式进行的,但您可以以编程方式触发它们,这应该足够了。

performSegueWithIdentifier("mySegue", sender: nil)

查看this video 以获得支持。

希望这会有所帮助:)

【讨论】:

  • 谢谢伙计。那工作得很好。我永远欠你救我的债。
  • 但是即使没有以编程方式编写任何内容,导航也会发生,一旦我在两个视图之间画出转场 - 我如何确保它仅以编程方式发生?
  • 抱歉,我不完全知道它是如何工作的。我只知道您必须以某种方式设置目标 ViewController,可能带有它的故事板 ID。也许这对你有帮助。应该可以在互联网上找到一些东西。
【解决方案2】:

没有UINavigationController 就不能使用push segue。您可以使用模态转场来实现这一点,例如:

self.presentViewController(encounterViewController, animated: true, completion: nil)

【讨论】:

    【解决方案3】:

    转场

    所以你使用 Segue ID 来确保你正确地进行 segue。

    没有转场

    我建议改为这样做:

    let vc = ViewControllerToSegueTo()
    self.presentViewController(vc, animated: true, completion: nil)
    

    如果您不想使用情节提要,那会稍微好一些。

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 1970-01-01
      • 2011-09-11
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多