现在的视图显示黑屏,为什么?

Car*_*tti 2 viewcontroller ios swift

我正在制作一个应用程序,如果特定日期已过,则会在启动应用程序后显示一个视图控制器。问题是:它只是返回黑屏。我已经测试了它,将呈现的视图控制器设置为初始视图控制器,并且它工作得很好;没有黑屏。因此,我的错误一定是在代码中。

我在以下位置调用这个函数viewDidAppear()

if date.hasPassed {
        presentView(fromDate: date)
    }
Run Code Online (Sandbox Code Playgroud)

这不是实际的代码,它更像是一个简化版本。在我的例子中,日期是数组中的自定义对象。该对象将其属性保存到 UserDefaults 中,以便它们可以显示在出现的视图控制器中。我的presentView(fromDate: date)功能如下:

func presentView(fromDate: date) {
    let vc = NewViewController()

    let title = date.title ?? "My date"
    let description = date.description ?? "My description"

    UserDefaults.standard.set(title, forKey: "title")
    UserDefaults.standard.set(description, forKey: "description")
    UserDefaults.standard.synchronize()

    self.present(vc, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

但当实际调用此函数时,它会呈现黑屏,但不会显示任何错误。你能告诉我为什么吗?

Gus*_*zOl 5

如果您在故事板中创建了 NewViewController,则像这样实例化将不会从那里获取 ui 界面。

您可以尝试在情节提要上为其分配 StoryBoardId 并尝试:

func presentView(fromDate: date) {
   let newViewController = self.storyboard.instantiateViewController(withIdentifier: "NewControllerIdentifier")

   // your code

  self.present(vc, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

如果控制器与呈现控制器位于同一故事板中。或者您可以为其创建一个 segue,调用该 segue 并在“prepareForSegue”中设置新的控制器数据。