iphone - viewController出现时出现黑色

标签 iphone objective-c ios ios5 viewcontroller

大家好,我是 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/

相关文章:

ios - 如何使用NSThread截取UIView的屏幕截图?

ios - 在 Swift 中持续更新图像

ios - 归档数组后 BOOL 变为 false

iphone - 从 self.navigationItem(在 UINavigationController 内部)打开时,UIPopoverController 未解除

ios - Facebook 登录状态检查问题

UILabel 的 IOS 8 问题?

ios - 如何基于多个属性和非属性(方法)对NSMutableArray进行排序

objective-c - 一些 iPhone 菜鸟问题

iphone - 解析 HTML 内容以与 iPhone 应用程序一起使用

iphone - 如何创建支持横向和纵向但不在它们之间旋转(保持其初始方向)的 View Controller