以编程方式在故事板中呈现模态视图控制器 iOS 5

5
我第一次在我的iOS应用程序中使用了Storyboards。我在Storyboard中有两个视图(A和B)。假设A是我的初始视图控制器。当我的应用程序启动时,我可以看到A视图控制器。到目前为止,一切都按照预期工作。现在,在我的A视图控制器中,我正在检查用户是否已登录。如果用户未登录,则我想以编程方式使用PresentModalViewController呈现B视图控制器。如何以模态方式显示B?
这是我的设置: enter image description here
这是我的代码:
- (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];
    }
}
1个回答

10

你目前所做的似乎是正确的... 你是否记得在storyboard中实际设置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
@iOSAppDev:好的。现在尝试我发布的代码。如果不起作用,那么可能有其他问题/缺失。此外,请确保这些代码行实际上已被执行。您还可以在要显示的视图控制器(LoginViewController)的viewDidLoad中添加一个NSLog语句,以确保它已加载。 - matsr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接