【问题标题】:Using XIB/NIB files contained within downloaded bundles on iOS在 iOS 上使用下载包中包含的 XIB/NIB 文件
【发布时间】:2012-01-08 18:59:35
【问题描述】:

从表面上看,这似乎是一个非常简单的问题,但由于某种原因,我无法让它工作。

我有一个杂志风格的应用程序,它以压缩包的形式下载每期的数据。

下载并解压后,应用程序会按预期成功访问捆绑包中包含的各种文件。其中包括 JSON、PNG、JPG、视频等。

但是,我还包含了一个 XIB 文件,其中包含一系列 UIView 中内容的物理布局,而我不能使用这个文件。

该文件存在,但是当我尝试使用以下方式加载它时:

UIViewController *controller = [[UIViewController alloc] initWithNibName: @"ViewController" bundle: assetBundle];

我收到以下错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/C6718DB8-0C0F-4D38-84E6-55C145279957/Documents/asset-4.bundle> (not yet loaded)' with name 'ViewController''

现在,这是 iOS 对不从下载的包访问 XIB 施加的限制,还是我在调用 XIB 以供使用时犯了一些错误?

但是,我找不到任何明确禁止以这种方式使用获取的捆绑包。

【问题讨论】:

    标签: ios interface-builder nsbundle


    【解决方案1】:

    我不确定您是否可以“合法地”摆脱这种情况。但问题可能是您提供的是“xib”而不是“nib”的编译版本。

    您可以使用提供的ibtool 程序从命令行手动执行此操作。

    ibtool --errors --warnings --output-format human-readable-text --compile ${OUTPUT_NAME} ${INPUT_NAME}

    然后,您可以将编译后的 .nib 文件放入包中并按照您的尝试进行加载。

    【讨论】:

    • 我猜是合法的,因为XIB不是可执行代码,只是界面布局。
    • 希望如此!无论如何,我已经向 Apple 提交了一个请求以找出答案 - 我会在收到回复后发布他们的详细回复。
    • 这可能没问题,因为您没有加载任何可执行代码。但总有机会。
    • 我在派生数据位置而不是在创建包的文件夹中进行编译。谢谢。
    • 任何线索是什么意思? Interface Builder Cocoa Touch Tool[40004:13603] CFPreferences:文件中的用户主目录://localhost/Users//Library/Application%20Support/iPhone%20Simulator/User/ 不可用。用户域将不稳定。
    猜你喜欢
    • 2021-04-11
    • 2017-01-08
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多