gpt4 book ai didi

iphone - viewController出现时出现黑色

转载 作者:可可西里 更新时间:2023-11-01 03:29:15 25 4
gpt4 key购买 nike

大家好,我是 iOS 开发的新手,目前遇到了一些问题,我正在尝试让登录表单在用户未登录时模态显示。

我正在使用 NSUserDefaults 来存储一个 id,我只是检查它是否存在。如果没有出现,那么我希望 UIViewController 出现。

到目前为止,我的 UINavigationController 中有以下代码,它位于 UITabViewController 中,我试图让 UIViewController 出现在第一个 UINavigationController(被选中的那个)上方,此时动画正在发生,但是那里只是一个黑屏,即使登录屏幕已经创建了所有相关的文本框等。如果我将此登录屏幕设置为要加载的初始 View ,它会正常加载。

这是出现在 UINavigationController 的第一个 View Controller 中的代码。

 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if (![prefs stringForKey:@"id"]){
LoginViewController *loginController = [[LoginViewController alloc] init];
[self presentModalViewController:loginController animated:YES];
} else {
[self loadCoffeeUserOrders:[prefs stringForKey:@"id"]];
}

模态视图正在加载,但此刻它只是显示为黑色,我尝试创建一个新的登录屏幕,但同样的事情发生了:除了黑屏什么都没有。

希望那里有足够的信息让别人了解可能发生的事情,我是 iOS 开发的新手,所以如果我犯了一些错误,知道我哪里出错了会很高兴。

谢谢

最佳答案

因此,您在此处创建的 LoginViewController 实例与您在 Storyboard 中设置的实例不同。我想你想让 Storyboard中的那个被加载和呈现。

最简单的方法是在 Storyboard中创建一个从您的第一个 View Controller 到您在那里创建的登录 View Controller 的 segue。您可以按住 Ctrl 从一个 View Controller 拖动到另一个 View Controller ,然后选择“Modal”作为 segue 的类型。然后去找那个 segue 的检查员并给它一个标识符。假设您将其称为“segueToLogin”。

然后要从您的代码中执行该 segue,只需执行如下操作:

  if (![prefs stringForKey:@"id"]){

[self performSegueWithIdentifier:@"segueToLogin" sender:self];

}

希望对您有所帮助。

编辑

所以为了回答你的问题,想象一下:

您对应用有一个绝妙的想法,因此您从便笺簿上取下一张纸,然后勾勒出这个绝妙的设计。然后你的同事过来,所以你撕下一张新的空白纸给他们看。他们不会留下深刻印象。

同样的事情发生在这里。您在 Storyboard中设置了一个包含所有 View 的 View Controller 。但是到了显示它的时候,你拿出了一个新的完全空白的 View Controller 并将其显示给用户。通过拉动并启动 segue,您最终加载了您想要的实际 View Controller 实例。

现在,在 segues 上,您可以在 Storyboard中创建它们以允许用户在场景中导航。有时这些 segues 直接附加到按钮或其他东西。但是在这种情况下,您不想让用户按下按钮或其他东西来显示登录 vc,所以您自己执行 segue。

希望这是有道理的。

关于iphone - viewController出现时出现黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8014437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com