【问题标题】:How do I present a modal view at application startup?如何在应用程序启动时呈现模态视图?
【发布时间】:2011-10-08 17:23:35
【问题描述】:

我在应用程序 didFinishLaunchingWithOptions 中有以下代码,我想在其中显示用于用户登录的模式视图控制器。

LoginViewController_iPhone *loginViewController=[[LoginViewController_iPhone alloc]initWithNibName:@"LoginViewController_iPhone" bundle:nil];
UINavigationController *loginNavigationController=[[UINavigationController alloc]initWithRootViewController:loginViewController];
loginNavigationController.modalPresentationStyle=UIModalPresentationFullScreen;
[self.window.rootViewController presentModalViewController:loginNavigationController animated:NO];

[loginViewController release];
[loginNavigationController release];

但是,我得到的只是一个空白屏幕。如果我替换以下内容

self.window.rootViewController=loginNavigationController;

登录屏幕正确显示。由于应用程序刚刚启动,因此没有为 rootViewController 属性分配其他视图控制器。我是否需要分配另一个视图控制器才能使其工作?

【问题讨论】:

    标签: iphone uiviewcontroller uiapplicationdelegate


    【解决方案1】:

    是的。您需要为窗口的rootViewController 属性分配一些东西才能调用其方法presentModalViewController

    【讨论】:

    • 有效。谢谢。我就是这么怀疑的。
    • 只是一般的事情,你试图调用一个对象的方法,它是 nil。
    【解决方案2】:
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:LoginViewController];
    
    navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:navController animated:NO];
    

    您可以在应用程序启动时首先加载的视图的 viewDidLoad 中进行设置。因此,一旦登录成功,您就可以将其弹出,您将准备好加载的视图。

    【讨论】:

    • 虽然这种方法可行,但我选择了第一个答案作为回调,通过 AppDelegate 的委托让我在登录后获得更多控制权。
    猜你喜欢
    • 2013-09-20
    • 2023-03-31
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多