【问题标题】:Presenting Modal View Controller before window is visible在窗口可见之前呈现模态视图控制器
【发布时间】:2011-06-06 12:27:05
【问题描述】:

我想在应用程序窗口上调用-makeKeyAndVisible 之前以模态方式呈现一个视图控制器。但是,这段代码只显示了mainNav 视图控制器:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    MainViewController *main = [[MainViewController alloc] init];
    UINavigationController *mainNav = [[UINavigationController alloc] initWithRootViewController:main];

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Restore"]) 
    {
        DetailViewController *detail = [[DetailViewController alloc] init];
        UINavigationController *detailNav = [[UINavigationController alloc] initWithRootViewController:detail];

        // changing main to mainNav does not help
        [main presentModalViewController:learnNav animated:NO];

        [detailNav release]; [detail release];

    }

    self.window.rootViewController = mainNav;

    [main release]; [mainNav release];

    [self.window makeKeyAndVisible];

    return YES;
}

我错过了什么?

【问题讨论】:

    标签: iphone ipad uiviewcontroller modalviewcontroller uiwindow


    【解决方案1】:

    您最好让窗口出现,然后然后使用animated=NO 呈现模态视图。在实例化和显示其他所有内容之前呈现模态视图有什么意义?

    编辑

    要尝试使您的代码正常工作,这里有一些提示。试试这个:

    [mainNav presentModalViewController:learnNav animated:NO];
    

    或者这个:

    [main.navigationController presentModalViewController:learnNav animated:NO];
    

    如果将这两种方法放在makeKeyAndVisible 调用之后,我会说它们效果最好。

    【讨论】:

    • 我想在显示任何内容之前设置所有内容,否则 UI 中的快速更改可能会使用户感到困惑。在DrillDownSave 示例中,窗口也只显示在最后。除此之外,首先显示窗口不会改变任何内容。
    • 请阅读编辑后的答案,并告诉我它是否有效。谢谢!
    • 不,它不会改变任何东西。但我试了一下,看来你是对的:我需要在呈现视图控制器之前“显示”窗口。我在if 语句之前添加了这一行:[self.window addSubview:mainNav.view]; 并删除了self.window.rootViewController = mainNav;。现在可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    相关资源
    最近更新 更多