使用代码而不是转换行在Storyboard-Viewcontrollers之间切换

时间:2014-05-17 16:42:47

标签: ios xcode uiviewcontroller storyboard

我想问一下如何在不使用故事板或xib文件的转换线的情况下在两个ViewController之间切换。

让我在这里描述我的问题: 我得到了一张桌面视图。在这个表视图中是不同的条目,但我想做不同的 的onclick-行动。我已经可以区分已点击的条目并获得一个切换案例来执行不同的操作。

我只想在某些情况下更改当前视图控制器。我怎样才能做到这一点? 我需要一些像这样的结构:

开关(...)     0:东西     1:更多的东西     2:一些神奇的东西     3: - >>更改视图控制器     默认

故事板甚至可以实现吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

所以有两种方法可以切换viewcontrollers。第一个是使用segue(这是你之前谈论过的线,虽然它们比你想象的更通用)。第二种是以编程方式创建第二个视图并将其设置为主视图控制器。

如果我错了,请纠正我,但似乎你想在特定条件下执行一个segue。

例如:

if (some condition is met) {
    change view controllers
} else {
    do nothing
}

这是对的吗?如果是这样,那么你可以做的是设置一个segue并把它放在一个条件中。因此,转到故事板,按住控件并单击第一个视图控制器并拖动到下一个视图控制器(注意:不要单击按钮,单击视图控制器本身)。接下来,通过单击segue线中间的小圆圈命名您的segue,然后转到属性检查器(看盾的东西)。根据需要命名segue,例如:“toSecondController”

以下代码将调用segue:

[self performSegueWithIdentifier:@"toSecondController" sender:self];

所以,你可以将它放在一个条件中,这样你就可以控制第二个控制器何时被调用。

if (some condition is met) {
    [self performSegueWithIdentifier:@"toExtraHosts" sender:self];
} else {
    //do nothing
}

编辑:只需重新阅读您的帖子,以下代码即可使用:

switch (...)
    {
        case 0:
            //thing 1
        case 1:
            //thing 2
        case 2:
            //thing 3
        case 3:
            [self performSegueWithIdentifier:@"toExtraHosts" sender:self];
        default:
            //default thing
    }

但是,您必须确保segue来自 viewcontrollers ,而不是来自按钮。原因是如果从按钮到另一个视图控制器进行segue,则会自动调用segue。如果从视图控制器到视图控制器,只有在使用performSegueWithIdentifier

以编程方式调用它时才会调用它。

希望能回答你的问题