【问题标题】:segue transition with condition storyboard使用条件故事板进行转场
【发布时间】:2012-08-24 03:53:29
【问题描述】:

我是故事板和 xcode 的新手(使用 4.4)

我想实现一个登录条件,如果完成 - segue 将起作用。否则,用户应该停留在同一个视图上。

我创建了 2 个 UIView:ViewController 和 Bar Controller。

我还创建了一个从 ViewController 到 Bar Controller 的 segue,并将其标识符设置为 loginSegue as modal。

在 LoginViewController.m 我添加了以下内容:

- (IBAction)login:(id)sender {
    self.email = self.emailText.text;
    self.password = self.passwordText.text;
   if ([self.email isEqualToString:@"O"] && [self.password isEqualToString:@"O"])
       [self performSegueWithIdentifier:@"LoginSegue" sender:sender];
    else
        [passwordText setText:@""];   
}

当我调试代码时,我看到如果电子邮件和密码不等于 O,if 会跳到 else,但是 segue(转换到新视图)仍然会发生。

如何防止用户被转移到新视图?

顺便说一句,如果我删除 if else 条件 - 用户将自动转移到下一个视图。在我看来,当我将 segue 从一个视图绘制到另一个视图时,它是在某个地方配置的。

【问题讨论】:

    标签: iphone objective-c ios xcode uistoryboard


    【解决方案1】:

    删除if[self perform...] 之间的空白行

    此外,您可能需要考虑将 if-else 语句放在大括号中,以防止此问题再次发生:

    if ([self.email isEqualToString:@"O"] && [self.password isEqualToString:@"O"]){
        [self performSegueWithIdentifier:@"LoginSegue" sender:sender];
    }else{
        [passwordText setText:@""];
    }
    

    如果这不能解决问题,请务必确认 segue 已连接到两个控制器,而不是直接连接到按钮。

    【讨论】:

    • 在我的代码中我没有空行 - 它是这样复制的(不知道为什么。我改变了它)。无论如何 - 添加括号没有帮助
    • @Odelya 这个segue是否直接连接到界面生成器中的这个按钮?
    • 在故事板中,segue 从 ViewController(登录视图)连接到 Tab Controller。我通过右键单击橙色图标登录视图控制器并将线绘制到选项卡栏控制器并分配标识符来做到这一点
    • @Odelya 所以你直接在控制器之间链接了segue,它没有直接链接到按钮对吗?
    • 对不起 - 你是对的。它是从按钮连接的。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-08-22
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    相关资源
    最近更新 更多