使用Swift编程,在没有导航控制器的情况下编写代码以编程方式更改视图控制器。

5

当我按下一个按钮时,我希望能够切换到一个新的视图控制器,而不使用导航控制器,但我似乎无法做到这一点。我已经四处寻找答案,但我发现的所有内容都是关于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视图控制器编程指南”来理解你正在做什么。 - rdelmar
我在下面发布了一个答案,但我建议在这里提问之前先进行一些研究,因为有大量的视频资源可供参考。 - LinusGeffarth
3个回答

9

您需要连接您想要使用的两个ViewControllers。然后随意命名segue,然后在IBAction或其他地方使用以下代码来触发segue。虽然不是完全以编程方式,但您可以以编程方式触发它们,这应该足够了。

performSegueWithIdentifier("mySegue", sender: nil)

请查看此视频以获得支持。

希望这有所帮助 :)


3
谢谢,太好了,完美解决了。你救了我,我感激不尽。 - samando
但是即使没有编写任何程序,一旦我在两个视图之间绘制了segue,导航就会发生 - 我该如何确保它仅以编程方式发生? - Jasper
抱歉,我不完全知道它是如何工作的。我只知道你必须以某种方式设置目标 ViewController,可能是通过其故事板 ID。也许这可以帮助你。在互联网上应该能找到一些相关信息。 - LinusGeffarth

9

如果没有 UINavigationController,您不能使用 push segue。您可以通过模态转换来实现此操作,例如:

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

0

Segue

使用 Segue ID 确保正确地进行 segue。

No Segue

我建议你改用以下方法:

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

如果您不想使用故事板,这样会稍微好一些。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接