【问题标题】:Switch between Storyboard-Viewcontrollers with code instead of transitions-lines使用代码而不是转换线在 Storyboard-Viewcontrollers 之间切换
【发布时间】:2014-05-17 16:42:47
【问题描述】:

我想问一下如何在不使用情节提要或 xib 文件上的过渡线的情况下在两个 ViewController 之间切换。

让我在这里描述我的问题: 我有一个表格视图。在这个表视图中有不同的条目,但我想做不同的 点击操作。我已经可以区分点击了哪些条目并获得了一个开关盒来执行不同的操作。

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

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

故事板也能做到这一点吗?

感谢大家的帮助。

【问题讨论】:

  • on 您是否在IndexPath 上单击了项目,您实现了这个东西。在 switch 案例中,您可以转到所需的任何 viewController。您可以通过编程方式推送或呈现视图控制器!

标签: ios xcode uiviewcontroller storyboard


【解决方案1】:

所以有两种方法可以切换视图控制器。第一个是使用 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
    }

但是,您必须确保转场来自视图控制器,而不是来自按钮。原因是如果你从一个按钮到另一个视图控制器进行转场,转场会被自动调用。如果您将其从视图控制器变为视图控制器,则仅当您使用 performSegueWithIdentifier 以编程方式调用它时才会调用它

希望能回答你的问题

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多