0

大家好。最近困扰我的事情是我组装的这个自定义电影播放器​​。它主要基于一个工作的,NGMoviePlayer.

问题是这样的:我有.xib一个 UIKit 友好的资源包。当我打电话时:

[MyMoviePlayerViewController initWithNibName:@"MyMoviePlayerViewController"
 bundle:[NSBundle bundleWithPath:
         [[NSBundle mainBundle] bundlePath]
          stringByAppendingPathComponent:@"MyMoviePlayerViewController.bundle"]];

..在我的自定义类上,然后访问view(因此调用loadView)它不会引发任何错误,但它实际上也不会正确加载插座。我看到一个白屏,调试显示所有视觉元素都是0x0,但没有出现预期的错误。

编辑:我现在也尝试在我的目标应用程序的资源包之外加载 .xib,并且发生了同样的事情(白屏)。

我正在寻找的特别是:

  • Could not load NIB <nibname>...如果根本没有找到,或者
  • ...loaded the <nibname> NIB but the view outlet was not set如果找到但未正确连接

xib 在本地应用程序中(我知道静态库不能包含 xib)。NGMoviePlayerDemo我已经尝试在 的作者提供的项目中使用相同的资源包,NGMoviePlayer但它确实会引发错误:

Could not load NIB in bundle:
'/Users/.../MyMoviePlayerViewController.bundle (not yet loaded)'
 with name 'MyMoviePlayerViewController'

我已导航到它为捆绑包显示的路径,并且该位置存在一个MyMoviePlayerViewController.xib文件。

我也尝试过使用bundle:nil,以防 Xcode 出于某种原因将捆绑目录的资源与主要目录的资源结合在一起。这两种情况都不会引发错误并在我的实际项目中显示白屏。这两种情况都会在项目中引发Could not load NIB错误。NGMoviePlayerDemo

编辑:我已经尝试过与应用程序中的资源包分开的相同 .xibNGMoviePlayerDemo并且它工作正常。

非常感谢所有输入。

4

1 回答 1

0

解决方法:注意Unknown class <classname> in Interface Builder file.消息。

我在静态库中有电影播放器​​的代码,电影播放器​​的父视图控制器作为外部标题包含在项目中,但子视图没有作为标题包含,所以它们没有被定位适当地。因为它们在我的目标应用程序中被引用的唯一位置是在.xib文件中,所以没有与这些子类有关的编译错误,但是当加载.xib这些类时找不到,所以没有设置它们的属性. 而这恰好包括播放器的所有控件,这可能会使初始化代码默默地失败。

我将子类中的所有代码和 ivars 合并到父电影播放器​​类中,现在可以正常工作了 :)

于 2011-05-10T05:05:53.170 回答