Ste*_*n S 2 xcode viewcontroller ios appdelegate
我正在创建一个iOS应用程序,其中我有以下要求:应用程序应该在第一次启动时显示登录屏幕,并且当应用程序从后台到前台时也必须显示该屏幕,以防它具有在运行时被发送到后台.
我已经处理过两种情况下的屏幕显示.但是,当我这样做并且应用程序来自后台时,我单击texfield键入我的密码,应用程序被冻结,并且它在一个我不知道它意味着什么的线程中失败.
当应用程序来自这样的背景时,我在AppDelegate的applicationWillEnterForeground中调用屏幕显示:
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
RoomRootViewController* room = [[RoomRootViewController alloc] init];
[[self window] setRootViewController:room];
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
非常感谢提前!我完全迷失了这个,因为我是iOS的新手,所以任何帮助都将非常感激.
附加在图像中,您可以看到应用程序失败的位置. 

您当前使用的代码是完全删除应用程序窗口的根视图控制器,换句话说,您正在删除应用程序中的所有视图和视图控制器.如果你不使用ARC,这只是一个巨大的内存泄漏.如果你是,那它仍然不是一个好主意.
在您的applicationWillEnterForeground:方法中,请尝试使用此代码:
RoomRootViewController* room = [[RoomRootViewController alloc] init];
[self.window.rootViewController presentViewController:room
animated:NO
completion:nil];
Run Code Online (Sandbox Code Playgroud)
这将显示所有应用当前视图RoomRootViewController 的顶部,而不是删除它们.然后你可以这样解雇它:
[self.window.rootViewController dismissViewControllerAnimated:YES
completion:nil];
Run Code Online (Sandbox Code Playgroud)
并轻松返回到您的应用程序的其余部分.
| 归档时间: |
|
| 查看次数: |
19793 次 |
| 最近记录: |