【发布时间】:2013-07-10 02:35:15
【问题描述】:
我正在创建一个 iOS 应用程序,其中我有以下要求:该应用程序应在第一次启动时显示登录屏幕,并且当应用程序从后台到前台时也必须显示该屏幕,在如果它在运行时被发送到后台。
我已经在这两种情况下都显示了屏幕。但是,当我这样做并且应用程序来自后台时,我单击 texfield 输入我的密码,应用程序被冻结,并且它在一个我不知道它意味着什么的线程中失败。
当应用程序来自这样的背景时,我调用要显示的屏幕,在 applicationWillEnterForeground 中,在 AppDelegate 中:
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
RoomRootViewController* room = [[RoomRootViewController alloc] init];
[[self window] setRootViewController:room];
[self.window makeKeyAndVisible];
这是正确的做法吗?
提前非常感谢!我完全迷失了,因为我是 iOS 的新手,所以非常感谢任何帮助。
附在一张图片中,您可以看到应用失败的地方。
【问题讨论】:
-
在这种情况下,我要做的是在您的应用程序委托中使用导航控制器的实例,并以模态方式显示您的登录控制器。如果您不使用导航控制器层次结构,我会推荐它,但另一种选择是将您的登录视图控制器视图添加为您的 uiwindow 的子视图。我认为您的问题可能与创建应用程序 uiwindow 的新实例有关。创建应用程序委托窗口后,您永远不必释放它。
标签: ios xcode viewcontroller appdelegate