更新的 iOS 二进制文件未更新 MainView NIB

Posted

技术标签:

【中文标题】更新的 iOS 二进制文件未更新 MainView NIB【英文标题】:Updated iOS binary not updating MainView NIB 【发布时间】:2012-03-11 00:01:43 【问题描述】:

所以我即将更新我的应用程序,但遇到了问题。在我的主屏幕上,我有一系列导致不同视图的 UIButton。我使用 Interface Builder 创建了 UIButtons。

在我的最新更新中,我想禁用这些按钮,直到从服务器下载适当的数据。出于某种奇怪的原因,我在 Interface Builder 中对 NIB 所做的任何更改都不起作用。例如,我禁用了 IB 中的一个按钮,但当我构建并运行时它仍然处于活动状态。就好像它仍然在使用以前版本的 NIB。我尝试从 NIB 中删除按钮,但它们仍然显示在模拟器或设备中。我发现修复它的唯一方法,虽然并不理想,是删除设备或模拟器的整个应用程序并安装一个新副本。但我的用户可能不会那样做。他们只需从 App Store 下载更新。

我也尝试过运行前清洁,但也没有用。

有什么想法吗???这是 Interface Builder 的错误吗??

编辑:我想我可以重命名笔尖并强制更新加载其自身的新版本。

更新:重命名主 NIB 文件会强制设备/模拟器更新文件。我真的认为这是某个地方的错误。我的代码有时可能很草率,但我知道如何启用/禁用按钮。

【问题讨论】:

你必须在代码中改变它的状态。添加行 [self.button setEnabled:NO];看看是否有帮助。 我在使用本地化 nib 文件创建新应用版本后遇到了这个问题。升级时,原版和本地化版本都有,应用默认为原版。不确定这是否是您的问题,但您不必担心客户有问题。这只是通过 Xcode 安装时的问题。通过 App Store 升级时,那些旧笔尖将被清除。 @RobBajorek 我相信这就是问题所在。感谢您的信息! 帖子太旧了,不知道你的问题有没有找到答案,不过我愿意分享我的经验,因为我也遇到过几次这样的问题。在 ios 6.0 之前的版本中,资源名称不区分大小写。例如。 NSArray *items = [[NSBundle mainBundle] loadNibNamed:@"NIBName" owner:nil options:nil]; NSArray *items = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:nil options:nil];在iOS 6.0中产生不同的结果。 【参考方案1】:

这不是你的错。这是 Xcode(在提出上述问题一年多之后)在运行之前将资源安装到模拟器或设备的应用程序文件夹中的一个缺陷。它复制新的或更改的资源(这很棒,因为它缩短了安装时间)但它确实不会删除过时的资源。当我不再在我的一些视图控制器中使用 .xib 文件时,这种行为让我感到很痛苦——我实际上从项目中删除了它们,但视图控制器仍然继续加载它们,这令人困惑和不安,直到我弄清楚发生了什么开。

在安装之前从模拟器或设备中删除应用程序将强制删除旧资源,并且下一次安装将仅具有您的构建中指定的资源。

我仍在研究解决方案;如果我想到它,如果我想出一些东西,我会更新这个答案。

从 App Store 或从 .ipa 文件安装时,不会出现此问题 - 此安装过程似乎会重新安装资源。

【讨论】:

以上是关于更新的 iOS 二进制文件未更新 MainView NIB的主要内容,如果未能解决你的问题,请参考以下文章

Core Data 未更新可转换属性

在应用商店 iOS 上的可用日期之前更新现有二进制文件的新二进制文件

更新“开发者拒绝”应用程序:“未找到符合条件的应用程序”

错误 ITMS-90096:“您的二进制文件未针对 iPhone 5 进行优化 - 提交的新 iPhone 应用程序和应用程序更新必须支持 4 英寸显示屏

使用 xcode5 时图像未显示在 xib 和模拟器中

iOS - 提交更新到仓库(分布式版本控制系统)