presentModalViewControllerAnimated:给出白色屏幕

时间:2011-05-09 03:11:00

标签: cocoa-touch ios loading iboutlet

嘿所有人。最近一直困扰我的东西是这个定制的电影播放器​​我把它放在一起。它主要基于一个有效的NGMoviePlayer

问题是:我在UIKit友好的资源包中有.xib。我打电话的时候:

[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因为某些原因将bundle目录的资源与主目录相结合。这两种情况都没有错误,并在我的实际项目中显示白屏。这两种情况都会在Could not load NIB项目中引发NGMoviePlayerDemo错误。

编辑:我在NGMoviePlayerDemo应用中尝试了与资源包相同的.xib,但效果很好。

非常感谢所有输入。

1 个答案:

答案 0 :(得分:0)

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

我在静态库中获得了电影播放器​​的代码,并且电影播放器​​的父视图控制器作为外部标题包含在项目中,但子视图未包含在标题中,因此它们不是正确定位。因为我们在目标应用程序中引用它们的唯一位置是在.xib文件中,所以没有与这些子类有关的编译错误,但是当加载.xib时,这些类不能被发现,因此没有设置他们的属性。而恰好包含了播放器的所有控件,这可能会使初始化代码无声无息。

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