Iphone 应用程序启动时显示登录屏幕
在我之前的文章中,我提到我必须模拟一些视图的模态行为。在这里,我将解释原因并询问一些更好的解决方案 用户应该在我的应用程序中看到的第一个视图是登录屏幕。成功验证后,程序将检查用户是家长还是孩子(在家庭中)。对于这些角色,应用程序必须提供不同的功能 所以我设计了这样的应用程序:Iphone 应用程序启动时显示登录屏幕,iphone,delegates,login,modal-dialog,Iphone,Delegates,Login,Modal Dialog,在我之前的文章中,我提到我必须模拟一些视图的模态行为。在这里,我将解释原因并询问一些更好的解决方案 用户应该在我的应用程序中看到的第一个视图是登录屏幕。成功验证后,程序将检查用户是家长还是孩子(在家庭中)。对于这些角色,应用程序必须提供不同的功能 所以我设计了这样的应用程序: 在my AppDelegate中声明登录视图控制器和选项卡栏控制器(用于界面的主要部分)的出口 在应用程序中:didfishlaunchingwithoptions:方法 将主窗口的rootViewController
- 在my AppDelegate中声明登录视图控制器和选项卡栏控制器(用于界面的主要部分)的出口
- 在
方法应用程序中:didfishlaunchingwithoptions:
- 将主窗口的
设置为登录视图控制器rootViewController
- 使AppDelegate成为登录控制器的委托,以便它可以在完成其工作时发送通知
- 将主窗口的
- 当AppDelegate在成功登录时收到消息时,它将确定用户是父用户还是子用户,实例化提供相应功能的视图控制器集,并将其传递给选项卡栏控制器
- 最后,AppDelegate将主窗口的
切换到选项卡栏控制器rootViewController
- 当然,用户可以注销,然后将
再次切换回登录控制器rootViewController
presentModalViewController:
。这就提出了一个问题:
首先,这是一个好的设计吗?如果是,我如何正确地模拟模态行为?我认为你的思路是正确的。 然而,我总是尽可能快地退出应用程序委托,只让它做应用程序级的事情(比如响应通知、进入和离开后台)。在这种情况下,这样做会对您有所帮助 在appDelegate中,创建一个新的UIViewController类,类似于“startUpController”。 将其视图添加到应用程序窗口。 然后在您的startUpController中,执行您过去在应用程序委托中执行的所有操作(登录、选项卡栏设置等)。 现在,由于您在视图控制器中,您可以将ModalViewController呈现给您的心仪内容。Hii 你应该参考这个
希望这有帮助 一,。总的来说,我同意你回答的第一部分。您已经描述了应用程序委托的用途。但是,当应用程序委托用于其他目的(如果您愿意,可以成为应用程序控制器)时,也有一些例外情况,例如,将其堆栈放入应用程序委托的核心数据模板。2.另一方面,视图控制器应该控制其视图。
startUpController
的视图只不过是一个虚拟视图。因此,我们将在另一个容器视图(窗口)中有一个“纯容器”视图。这违反了Occam的剃刀原则。好吧,苹果的许多示例项目在应用程序委托中加入了逻辑,但这并不正确。如果你已经构建了任何核心数据应用程序,你肯定会发现在应用程序代理中它是多么笨拙。2.你可以自由地将额外的视图分解出来(或者用剃刀将其切掉);由于您询问如何模拟模态对话框,我得出结论,您对视图理解得不太好,并给了您一个简单的解决方案。不幸的是,我对视图理解得不够好,所以我试图从逻辑上进行推理。这样想:如果您没有任何登录屏幕和不同的角色,您会创建一个视图控制器来设置主选项卡栏控制器吗?(在您的情况下,我会这样做,这样您就有一个viewConroller,您可以用它推送模式对话框)。在大多数情况下,是的,我会成立一个VC来管理tabbar。我试图遵循的原则是“一个班级应该做好一件事”。当您希望在其他项目中,甚至在项目中重用类时,这会有很大帮助。最后,虚拟视图(我称之为包装视图)没有什么错,因为它们通常提供更精确的表示控制,并且允许您留在类中只处理局部变量,而不必调用appDelegate或其他一次性的hacks。@mike,我刚刚发现一篇有趣的博文。上面说。不幸的是,这不是苹果的文档或其他同等权威的东西,也没有人支持这种观点。