0

nil通常当我作为它的第一个参数传入时,initWithNibName:bundle:它会自动找到名称,但有时它不会,它只是显示一个黑屏。在什么情况下会发生这种情况?nil控制台窗口中没有错误,除非我将 nib 更改为 nib 名称的字符串文字,否则应用程序会愉快地以黑屏方式运行。我在哪里可以检查以解决此问题?

4

3 回答 3

2

你很可能有一个viewcontroller到nib名字不一致加载nib的作用如下

如果您将 nil 传递给 nib 名称,sdk 将执行以下操作

  1. 如果视图控制器类名以单词“Controller”结尾,如在 MyViewController 中,它会查找名称与类名匹配但不包含单词“Controller”的 nib 文件,如在 MyView.nib 中。
  2. 它查找名称与视图控制器类的名称匹配的 nib 文件。例如,如果类名为 MyViewController,它会查找 MyViewController.nib 文件。

苹果文档

于 2012-06-07T04:39:53.807 回答
1

我从来没有nil在之前的第一个参数中传递过“” [UIViewController initWithNibName: bundle:],但是苹果的文档说:

如果为 nibName 参数指定 nil 并且不覆盖 loadView 方法,则视图控制器会使用其他方式搜索 nib 文件。请参阅笔尖名称。

所以大概你正在你的 loadView 方法中做一些事情。

在实例化视图控制器时,可能只指定显式的 .xib 名称可能是最安全的(也是最佳实践)。

于 2012-06-07T04:39:08.183 回答
0

您总是可以只使用 init 并覆盖 viewDidLoad。

于 2012-06-07T04:42:56.833 回答