Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 应用程序启动时显示登录屏幕_Iphone_Delegates_Login_Modal Dialog - Fatal编程技术网

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
    再次切换回登录控制器
我想显示和关闭登录屏幕,就好像它是一个模式视图一样,但是AppDelegate只有一个空窗口,因此我没有要发送的对象
presentModalViewController:
。这就提出了一个问题:

首先,这是一个好的设计吗?

如果是,我如何正确地模拟模态行为?

我认为你的思路是正确的。 然而,我总是尽可能快地退出应用程序委托,只让它做应用程序级的事情(比如响应通知、进入和离开后台)。在这种情况下,这样做会对您有所帮助

在appDelegate中,创建一个新的UIViewController类,类似于“startUpController”。 将其视图添加到应用程序窗口。 然后在您的startUpController中,执行您过去在应用程序委托中执行的所有操作(登录、选项卡栏设置等)。 现在,由于您在视图控制器中,您可以将ModalViewController呈现给您的心仪内容。

Hii

你应该参考这个


希望这有帮助

一,。总的来说,我同意你回答的第一部分。您已经描述了应用程序委托的用途。但是,当应用程序委托用于其他目的(如果您愿意,可以成为应用程序控制器)时,也有一些例外情况,例如,将其堆栈放入应用程序委托的核心数据模板。2.另一方面,视图控制器应该控制其视图。
startUpController
的视图只不过是一个虚拟视图。因此,我们将在另一个容器视图(窗口)中有一个“纯容器”视图。这违反了Occam的剃刀原则。好吧,苹果的许多示例项目在应用程序委托中加入了逻辑,但这并不正确。如果你已经构建了任何核心数据应用程序,你肯定会发现在应用程序代理中它是多么笨拙。2.你可以自由地将额外的视图分解出来(或者用剃刀将其切掉);由于您询问如何模拟模态对话框,我得出结论,您对视图理解得不太好,并给了您一个简单的解决方案。不幸的是,我对视图理解得不够好,所以我试图从逻辑上进行推理。这样想:如果您没有任何登录屏幕和不同的角色,您会创建一个视图控制器来设置主选项卡栏控制器吗?(在您的情况下,我会这样做,这样您就有一个viewConroller,您可以用它推送模式对话框)。在大多数情况下,是的,我会成立一个VC来管理tabbar。我试图遵循的原则是“一个班级应该做好一件事”。当您希望在其他项目中,甚至在项目中重用类时,这会有很大帮助。最后,虚拟视图(我称之为包装视图)没有什么错,因为它们通常提供更精确的表示控制,并且允许您留在类中只处理局部变量,而不必调用appDelegate或其他一次性的hacks。@mike,我刚刚发现一篇有趣的博文。上面说。不幸的是,这不是苹果的文档或其他同等权威的东西,也没有人支持这种观点。