通常当我将nil
作为initWithNibName:bundle:
的第一个参数传递时,它会自动找到该名称,但有时它不会显示该名称,它只会显示黑屏。在什么情况下会发生这种情况?控制台窗口中没有错误,除非我将nil
更改为笔尖名称的字符串文字,否则应用程序会愉快地继续作为黑屏运行。我在哪里可以检查以解决这个问题?
答案 0 :(得分:2)
你很可能有一个viewcontroller来指向nib名称不一致 加载笔尖的作用如下:
如果将nil传递给nib名称,则sdk将执行以下操作
- 如果视图控制器类名以单词“Controller”结尾,就像在MyViewController中一样,它会查找名称与之匹配的nib文件 没有单词“Controller”的类名,如MyView.nib。
- 查找名称与视图控制器类名称匹配的nib文件。例如,如果类名是MyViewController, 它查找MyViewController.nib文件。
醇>
答案 1 :(得分:1)
我以前从未在[UIViewController initWithNibName: bundle:]
的第一个参数中传递“nil
”,但Apple的文档说:
如果为nibName参数指定nil而不覆盖 在loadView方法中,视图控制器使用搜索nib文件 其他方式。请参阅nibName。
所以大概你在loadView方法中做了些什么。
在实例化视图控制器时,可能只是指定显式.xib名称可能是最安全的(也是最佳实践)。
答案 2 :(得分:0)
您可以始终只使用init并覆盖viewDidLoad。