Ios 以编程方式快速更改视图,并使用performsguewithidentifier/

Ios 以编程方式快速更改视图,并使用performsguewithidentifier/,ios,swift,uiviewcontroller,storyboard,segue,Ios,Swift,Uiviewcontroller,Storyboard,Segue,因此,我试图在触发某些条件时以编程方式更改视图 我创建了一个过于简单的项目,在加载视图1后,我希望从视图1更改为视图2。实际上,有一些逻辑操作检查某个变量是否为真,然后调用performsguewithidentifier函数,但是为了尽可能简单,我删除了该代码 我执行的步骤首先是创建两个视图: 然后单击视图1,检查其属性,然后创建一个手动触发的视图2序列 我选择了“显示”选项,因此现在我的视图通过一个segue连接 然后在属性检查器下,我给出了脚本序列和标识符“GoToView2”。 从那

因此,我试图在触发某些条件时以编程方式更改视图

我创建了一个过于简单的项目,在加载视图1后,我希望从视图1更改为视图2。实际上,有一些逻辑操作检查某个变量是否为真,然后调用performsguewithidentifier函数,但是为了尽可能简单,我删除了该代码

我执行的步骤首先是创建两个视图:

然后单击视图1,检查其属性,然后创建一个手动触发的视图2序列

我选择了“显示”选项,因此现在我的视图通过一个segue连接 然后在属性检查器下,我给出了脚本序列和标识符“GoToView2”。 从那里我转到ViewController.swift文件,在viewDidLoad函数中。我插入带有识别码的PerformSegue:

self.performSegueWithIdentifier("GoToView2", sender: self)

但是,当我运行代码时。视图2未加载,模拟器中仅显示视图1


任何帮助和解释都将不胜感激。

我正在做一个项目,它正是您想要做的。使用标识符执行segue是正确的做法。我的项目也会签入viewDidLoad


你所有的步骤看起来都很好,所以我认为这是一个微妙的问题。检查identity inspector,查看您是否将视图控制器与视图1连接起来。我在尝试在
viewdiload
函数中执行segue时遇到了相同的问题,出现的错误似乎是您尝试使用segue加载的视图不在窗口层次结构中

将调用更改为
viewdidappeage
似乎解决了另一篇文章中提到的问题:(注意语言是objective-c而不是swift,但可以翻译)

在视图生命周期的什么时候,您要将其更改为另一个视图控制器,似乎必须小心-在
viewdiload
中,故事板中的所有视图都不可用


顺便说一句,在没有条件的情况下,每次加载视图时都会触发segue(并加载视图控制器)

是否将第一个视图控制器的自定义类属性设置为ViewController?这是代码执行所必需的。您在Identity inspector中设置了它。@MikeTaverne自定义类属性设置为ViewController,这是默认设置(我也手动检查了)。我刚刚检查了Identity inspector视图1是否连接到ViewController。还是没有快乐。