【问题标题】:PresentModalViewController in Storyboard programmatically iOS 5以编程方式 iOS 5 在 Storyboard 中的 PresentModalViewController
【发布时间】:2012-07-24 20:03:32
【问题描述】:

我第一次在我的 iOS 应用中使用故事板。我的故事板(A 和 B)中有 2 个视图。假设 A 是我故事板中的初始视图控制器。当我的应用程序启动时,我可以看到视图控制器 A。到目前为止,一切都按预期工作。现在在我的视图控制器 A 中,我正在检查用户是否已登录。如果用户未登录,那么我想呈现视图控制器 B。如何以编程方式使用 PresentModalViewController 以模态方式显示 B?

这是我的设置

这是我的代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    if (!isUserLoggedIn) {
        NSLog(@"USER NOT LOGGED IN....");
        UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        LoginViewController *vc = (LoginViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"B"];
        [self presentModalViewController:vc animated:YES];
    }
}

【问题讨论】:

    标签: ios5 uistoryboard presentmodalviewcontroller


    【解决方案1】:

    到目前为止,您所做的似乎是正确的。您是否记得在情节提要中实际设置了 B 的标识符?

    另外,你可能想试试

    [self.storyboard instantiateViewControllerWithIdentifier:@"B"];
    

    而不是你在做什么。

    更新:

    viewDidLoad 方法可能如下所示:

    - (void)viewDidLoad {
    
        [super viewDidLoad];
    
        if (!isUserLoggedIn) {
    
            NSLog(@"User is not logged in.");
    
            LoginViewController *vc = (LoginViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"B"];
            [self presentModalViewController:vc animated:YES];
    
        }
    
    }
    

    另外,我从图片中看到您的第一个视图控制器没有设置为任何特定的类。它只是说“视图控制器”,而第二个显示“登录视图控制器”正确。

    注意:我现在无法访问 Xcode,所以我还没有测试它。

    【讨论】:

    • 标识符设置正确。我应该在哪里写上面的行&我应该从我的代码中删除什么?
    • @iOSAppDev:好的。试试我现在发布的代码。如果这不起作用,则还有其他错误/缺失。此外,请确保这些代码行实际执行。您还可以在要显示的视图控制器 (LoginViewController) 的 viewDidLoad 中添加 NSLog 语句,以确保它已加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2018-04-26
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多