0

我们有一个控制器,它是 UIViewController 的后代。也就是说,类似:

  • UIView 控制器
    • BaseViewControllerChild
      • ViewControllerInQuestion

当我们尝试显示这个 ViewControllerInQuestion 时,它没有显示出来。我们碰巧在 init 方法中有一个 log 语句。

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    NSLog(@"ViewControllerInQuestion : initWithNibName:: %@ %@", nibNameOrNil, nibBundleOrNil);
    // ... 
}

我们在那里的日志记录报告了一些有趣的事情。

ViewControllerInQuestion : initWithNibName: ViewControllerInQuestion 
NSBundle </var/mobile/Applications/84129-777-IAMSMASHINGNUMBERSBUTYOUGETTHE
IDEA-85327/OurApp.app/OurSDKResourcesBundle.bundle> (not yet loaded)

特别是最后一部分,我们看到它说“ (尚未加载) ”。 这意味着什么? 我们已经构建了资源包,它似乎很高兴地位于我们的项目中。

语境

不要被上下文吓到(你已经走得太远了!),但我们实际上是在 Unity 中从我们的 SDK 中调出与此视图控制器关联的视图。也就是说,我们有一个由 Unity 创建的 XCode 项目,我们已经将我们自己的 SDK 添加到该 XCode 项目中,并且这个 viewcontroller 在那个 SDK 中。它也没有出现。

其他问题/搜索结果提到了异常或不同的错误。这只是来自这个日志语句,因为我们调试了为什么 XIB 不会出现;这不是一个例外,它只是不显示。这是什么意思?

额外说明:我们的代码在更高版本的 Unity (4.1.2) 中运行良好。为了让它与旧版 Unity (3.5.7) 一起编译,我们必须修改 XCode 项目(Unity 吐出的)上的许多项目设置并稍微更改代码。内部 SDK 代码本身没有更改:我们只更改了 Unity 吐出的 XCode 项目的文件和项目,这意味着问题可能是 1.) 我们的项目设置/XCode 项目更改或 2.) 旧版本中的某些内容Unity 或 iOS 版本。第一步是了解“(尚未加载)”的含义,我想!

4

1 回答 1

1

(尚未加载)...

NSBundle是图像和接口资源的容器,但它也是代码资源的容器。您可以在不加载代码资源的情况下实例化一个包,然后稍后显式加载它们(- isLoaded、、、- load- loadAndReturnError:

确保所有资源都配置为在构建期间复制到您的包中。您可以在 Finder 中打开包(右键单击并显示包内容)以验证它是否包含您期望的所有内容。

于 2013-04-26T11:04:50.587 回答