iOS - performSegueWithIdentifier 不起作用?

Posted

技术标签:

【中文标题】iOS - performSegueWithIdentifier 不起作用?【英文标题】:iOS - performSegueWithIdentifier not working? 【发布时间】:2012-07-11 06:00:22 【问题描述】:

我的应用中只有两个 ViewController

故事板设置:-

我有一个从我的ViewController 直接连接到 MainTableViewController 的推送 segue。我希望我的应用在用户输入正确的密码后立即重定向到主视图。

这是我的代码:-

- (IBAction)checkInput


    NSMutableString *aString = [NSMutableString stringWithFormat:firstDigit.text];
    [aString appendFormat:secondDigit.text];
    [aString appendFormat:thirdDigit.text];
    [aString appendFormat:fourthDigit.text];
    if([aString isEqualToString:@"1111"])
    
        result.text = @"Right Password";
        //UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryBoard" bundle:nil];
        //UITableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"mainTableViewController"];
        //[self.navigationController pushViewController:tvc animated:YES];
        //[self removeFromParentViewController];
        [self performSegueWithIdentifier:@"mainSegue" sender:self];
    
    else 
        result.text = @"Wrong Password";
    
    NSLog(@"%@", aString);

checkInput 会在用户输入最后一位数字后立即被调用。我在我的第四个 TextField 的 Editing did End 上调用它。

任何帮助将不胜感激。 谢谢

【问题讨论】:

【参考方案1】:

诀窍在于,这些 segues 仅在您的视图控制器“嵌入”到 UINavigation 控制器中时才有效。选择您的第一个 VC,然后选择(从顶部菜单中)编辑器 > 嵌入 > 导航控制器。

它应该自动将自己设置为初始 VC,但请仔细检查。

请注意,在这张图片中,我正在展示如何操作,但它已经完成,因此您可以看到它自动将我的主 VC 连接到导航控制器。

【讨论】:

我想过这一点,但我不希望我的用户使用导航控制器返回密码屏幕。我尝试在密码屏幕和主视图之间嵌入 NavigatinController 但仍然没有运气。 :( 如果这是您的意图,那么您不能(或不应该)使用 push segue。在这种情况下,您应该替换窗口的 rootViewController 或者从第一个视图控制器模态显示它。 感谢 ctrahey 回答我的问题。对此,我真的非常感激。 +1 谢谢,很快,很聪明!【参考方案2】:

另一个想法是将主视图嵌入到导航视图控制器中,并将其用作初始 vc。然后在需要时将密码 vc 模式显示在主 vc 之上。这种方式的另一个好处是您现在可以使用popToViewController:animated:,而您目前不能使用这种方式。

initial vc ----> main vc
                   |
                   |
                 modaly
                   |
                   |
              pass code vc

【讨论】:

这是个好主意。我应用了它并且工作得很好。如果用户输入正确的密码,我会在 MainTableViewController 的 viewDidLoad 中显示我的密码屏幕,并在 checkInput 中将其关闭。虽然我仍然很困惑,这是呈现和关闭视图控制器的好习惯吗? 您有什么顾虑?呈现 vcs 模式是完全正常的。很高兴我能帮上忙! 感谢您的精彩回答 :) 已接受并 +1。

以上是关于iOS - performSegueWithIdentifier 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

IO复用阻塞IO非阻塞IO同步IO异步IO

四种IO模型‘阻塞IO/非阻塞IO/信号驱动IO/异步IO‘

5种IO模型阻塞IO和非阻塞IO同步IO和异步IO

网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

同步IO异步IO阻塞IO非阻塞IO之间的联系与区别

同步IO异步IO阻塞IO非阻塞IO之间的联系与区别