【问题标题】:Change Storyboard View using Seague使用 Seague 更改 Storyboard 视图
【发布时间】:2014-05-31 22:45:43
【问题描述】:

我有以下代码检查与我的服务器的连接,如果没有找到连接,我希望它更改视图。

NSString *connect = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://myserver.com"] encoding:NSUTF8StringEncoding error:nil];

if (connect == NULL) {
    [self performSegueWithIdentifier:@"network_failure" sender:self];
} else {
    // My other code here
}

我的问题是它不会改变视图。我在标识符为network_failure 的两个视图之间添加了故事板segue。我没有导航控制器或类似的东西,有问题吗?

感谢您的帮助!

【问题讨论】:

  • 看看你是否缺少这个方法:- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

标签: ios xcode cocoa-touch segue viewcontroller


【解决方案1】:

不,这不是问题。

首先,在ObjectiveC 中存在nil,这是一个面向对象的NULL。你必须使用它。所以:

if(connect == nil)

或更好:

if(!connect)

所以由于nilNULL 不同,可能您的代码没有进入 if 范围

您可以通过一个简单的断点来发现这一点。

无论如何:

请务必从 2 视图控制器设置触发器 segue(行),并使用 名称 network_failure(这不是最好的名称。应该是取而代之的是 View1ToView2) 以及模态 modal 而不是 push 因为你没有 NavigationController

【讨论】:

  • 在第二个视图控制器中设置触发segue是什么意思?
【解决方案2】:

首先你需要使用 nil 而不是像 Matteo Gobbi 所说的 NULL 。然后如果你没有导航控制器,你应该调用第二个 viewController 模式。首先,您为第二个 VC 创建一个类,然后将其导入到 firstVC.m,然后您需要在 storyboard 中为第二个 VC 设置相同的类。建立连接之后,选择 modal 并给它一个很好的 segue 标识符。然后就可以实现下面的看第二个VC了

if ([segue.identifier isEqualToString:@"(yourSegueIdentifier)"]) {
    [self performSegueWithIdentifier:@"(yourSegueIdentifier)" sender:self];
}

试一试(未经测试的代码)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-01
    • 2013-07-18
    • 2016-04-14
    • 2016-11-18
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多