【发布时间】: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中产生不同的结果。
标签: ios interface-builder uibutton nib