问候!我有一个有用的iPhone应用程序(huzzah!),它使用 MainView.xib ,其中包含一个库存充足的 UITabBar ,其中有几个 UINavigationController 对象和视图-THE就绪

我现在被要求为此混音添加一次性注册视图。此视图将在应用程序启动时 UITabBar 之前显示,从用户获取一些信息,向服务器注册 - 或检查现有注册,然后将一些数据松散在钥匙串。 (如果钥匙串已经显示了注册证明,那么我们将跳过显示此特定视图。)

注册和钥匙串部分我已经得到了控制(谢谢Erica Sadun的后者!),但显示初始的一次性视图比我预期的要复杂。 / p>

我怀疑我太接近问题,看不出来是什么问题。我真的希望它是飞行员错误而且Rube Goldberg也不需要任何东西!

以下是该方案:

应用程序首先加载 MainView.xib ,其中包含前面提到的 UITabBar 控制器等。人。为了论证,让我们说必须显示注册视图。此外,我们希望它具有模态外观,因此它将从下往上飞入。然后,当我们完成后,我们可以解雇它,调用代理人(很可能是App Delegate)并告诉它继续使用原来的 UITabBar

// Normally, the Tab Bar Controller's view is added to the window ... still do this?
[window addSubview:tabBarController.view];

// We could now set up a VC like so. Mostly harmless. (I know, "mvc" is an unfortunate abbreviation in this case.)
RegistrationVC *mvc = [[RegistrationVC alloc] initWithNibName:@"RegistrationView" bundle:nil];

请注意, RegistrationView.xib 内部有 UIView ,但没有导航控制器。我们希望将它解耦,以便可以重复使用它,例如,作为标签栏项目的导航控制器的一部分(例如,查看您的注册信息)。

继续前进。我们创建了一个导航控制器,旨在以模态方式呈现内容:

UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:mvc];

然后我们使用标签栏控制器作为基础来呈现我们的模态VC,并释放分配的位。

[tabBarController presentModalViewController:nc animated:YES];
[nc release];
[mvc release];

首先观察。有些东西告诉我这简直太草率了。您可以看到第一个标签栏项目的导航栏和视图就像模态视图一样突然出现.Yeccch!此外,尝试预先将所选VC设置为nil无效:

 tabBarController.selectedViewController = nil;

我们真的不希望/需要使用标签栏直到之后模态VC完成(并且我们有代表帮助告诉我们何时发生这种情况)。

为什么我甚至不打扰Tab Bar?好吧,看起来我需要某些东西挂起那个模态VC的帽子,我不知道还有什么可以使用。

这是唯一的方法吗?它只是似乎不必要地连接注册VC和标签栏,它只是闻起来......错了。

线索欢迎/赞赏!

有帮助吗?

解决方案

如果不知道Default.png显示的内容,很难回答这个问题。假设你正在关注HIG并且它显示一个空的tabBarController,我建议一个有点复杂的分层: 底部视图:tabBarController.view 中间视图:UIImageView:Default.png 顶视图:位于屏幕底部下方的注册视图

启动时,如果需要显示注册视图,请手动向上设置动画,动画完成后,请删除其下方的UIImageView。注册完成后,手动向下注册视图以显示tabBarController。如果在启动时您不需要注册视图,只需为UIImageView设置动画即可淡化(或仅删除它)。

OTOH手,如果你没有关注HIG而是显示某种闪屏,事情会变得容易一些。像这样的层: 底部视图:tabBarController.view 顶视图:UIImageView:Default.png

如果您需要显示注册,请使用动画:NO执行presentModalViewController,然后淡出UIImageView。如果没有,只需淡出UIImageView。

对于图片来说,这是一个冗长的解释,希望它有意义。重点是我建议添加一个UIImageView:Default.png作为应用程序启动时首先看到的东西,并使用它来指导你过渡到注册或tabBarController。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top