如何解决viewWillAppear和viewDidLoad用于显示登录弹出窗口
|| 我有一个UIViewController,如果用户尚未登录,则应在其中弹出LoginViewController。问题是我应该在哪里称呼它:LoginViewController* lvc = [[LoginViewController alloc] init];
lvc.delegate = self;
//[lvc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:lvc animated:NO];
[lvc release];
应该在viewDidLoad还是viewWillAppear中?我认为将其放在viewWillAppear中是有意义的吗?我试图将其放在viewDidLoad内,它在视图的左侧和右侧为我提供了额外的边框。为什么是这样?
更新:
我在这里要做的是在UISplitViewApplication的DetailViewController上调用presentModalViewController。但是,当我这样做时,什么也没有发生。我尝试创建一个UISplitViewApplication的新项目,但仍然没有用。
问题是为什么?以及如何在UISplitViewApplication的viewWillAppear中呈现模式视图
解决方法
模态窗口尝试相对于调用它的视图控制器进行初始化(例如,调整笔尖的大小)。在父级的loading1中创建和显示它有时会给它错误的信息,因为父级本身仍在加载。这就是为什么您会看到差异。在这种情况下,最好在
viewDidAppear
中显示模态控制器,因为所有参数都已准备好传递给模态控制器,因此它可以正确加载自己的视图。尽管有时如果您要加载的东西很多,即使这还不够,您还需要等待更长的时间才能呈现模态视图(这听起来根本不像您的情况,因此应该没有任何内容可做)。担心在那里)。我希望这会有所帮助
, 我会在AppDelegate中放置类似的内容。
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
[self.window addSubview:self.viewController.view];
[self.window makeKeyAndVisible];
// Show the login screen if the user hasn\'t logged in yet
if (... login check here...)
{
LoginViewController* loginController = [[LoginViewController alloc] init];
[self.viewController presentModalViewController:loginController animated:NO];
[loginController release];
}
}
您的登录屏幕将放置在常规ViewController的顶部。成功登录后,关闭LoginViewController,您的用户即可开始使用您的应用程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。