Xcode 4.2 在 IB 的选项卡栏上放置导航控制器时的警告
Posted
技术标签:
【中文标题】Xcode 4.2 在 IB 的选项卡栏上放置导航控制器时的警告【英文标题】:Xcode 4.2 Warnings when dropping Nav Controller on Tab Bar in IB 【发布时间】:2011-10-02 10:05:41 【问题描述】:我正在开发一个与 ios 4 兼容的应用程序,因此我的部署目标设置为 iOS 4.0。
每当我将UINavigationController
放到UITabBar
上时,我都会收到以下两个警告:
warning: Attribute Unavailable: Defines Presentation Context is not available prior to Xcode 4.2.
warning: Attribute Unavailable: Defines Presentation Context on iOS versions prior to 5.0.
UINavigationController
按预期运行,实际上整个应用程序运行完美。但是这两个警告让我发疯了!
此外,当我删除 UINavigationController
时,警告就会消失。
【问题讨论】:
您应该注册一个 *** 帐户!我们是很酷的人:) 【参考方案1】:只需取消选中属性检查器中的“定义上下文”复选框即可。 (双击 MainWindow.xib,选择导航控制器,然后转到 View->Utilities->Attributes Inspector。)这样就可以消除警告了。
【讨论】:
根据文档:“一个布尔值,指示在模态演示期间是否覆盖此视图控制器的视图。”我猜在 iOS 5 中,你可以让模态视图控制器只覆盖其委托视图控制器的一部分。但我还没试过。 @jkira:你知道为什么我在所有“定义上下文”选项都未选中的情况下收到此警告吗?【参考方案2】:您收到这些警告是因为您正在使用带有 4.x 部署目标的 iOS 5.0 SDK 功能。
如果不是,大多数新的 5.0 热点,包括 ARC 和 Storyboards,都完全向后兼容 iOS 4.x(我不记得 4.0 或 4.3 是支持的最低版本,请查看文档),它会按预期工作,但 Xcode 无论如何都会警告你。
如果它真的困扰您,您应该能够禁用该警告,但我不会。也就是说,Apple 目前不接受使用 Xcode 4.2 测试版构建/存档的应用程序提交到 App Store。这意味着您需要在生产环境中使用 Xcode 4.0/4.1。
在我们继续之前,您应该知道 Xcode 4.2/iOS 5 是 beta 软件,它处于 NDA 之下(您在加入 Apple 开发者计划时同意这一点),不能在公共领域讨论。这意味着您将无法从公众眼中的地方(例如 ***)获得尽可能多的帮助。 但是,既然我在这里,这是一个非常高级的问题,我可以帮忙:)
以后,如果您有 iOS 测试版问题或问题,您应该点击Apple Developer Beta Forums(一个很好的资源,在发布之前始终搜索),或者在 irc.freenode.net 上的#iphonedev 获取非测试版的东西(我会在那里,打个招呼!)
如果您正在开发要在 App Store 上发布的应用程序:
您需要使用 Xcode 4.0 或 4.1 进行开发,Apple 不接受使用 4.2 构建/存档的应用程序。 (我知道我重复了自己,但人们似乎经常错过这一点)
而且,尽管 4.2b7 比以前的 Xcode 测试版更好地支持为旧框架开发(通过允许您安装以前版本的模拟器),但您仍然会发现自己不小心到处使用 5.0 SDK 功能,因为代码完成/界面构建器非常积极地支持所有新的热点。这是因为测试版是为了尝试新事物,而不是稳定的应用程序开发。
这意味着你需要切换回使用 Xcode 4.0/4.1 进行生产,如果你没有安装它,或者你用 beta 覆盖了稳定版本,不要尝试安装 4.0/4.1在 4.2 beta 的顶部,奇怪的事情会发生,两个版本都会开始表现得非常奇怪,并且 Xcode 至少会崩溃两倍。
在这种情况下,最好的办法是按照以下步骤操作。确保您没有跳过任何内容,否则您将不得不重新启动整个过程。
确保您已提交并推送代码, 像这样卸载 Xcode 会暂时删除 git。 (这是一个 在工作中给我发一次)
如果您打算继续试验,请下载 Xcode 4.0/.1 和 4.2 的安装程序。 (如果你已经 都下载了,整个过程不会超过5 SSD 上的分钟数)
使用以下命令从命令行卸载 Xcode 测试版:sudo <Xcode>/Library/uninstall-devtools --mode=all
(more info here)
重启电脑(这很重要,不要跳过!!!)
安装最新的非测试版 Xcode 并继续开发。
如果你想同时使用 Xcode 的两个版本(4.0/4.1 和 4.2):
您必须在安装 4.0/4.1 之后安装测试版,否则您将用旧的东西覆盖新的东西,这会给您带来很多很多令人头疼的问题。我还建议在安装之间重新启动。
您需要在 4.0/4.1 之后安装 4.2,并安装到不同的文件夹(我使用 /Xcode4beta/,也不要将其放在包含 4.0/4.1 的文件夹中)。我发现如果我将工作的 iOS5 分支分开,并在空闲时间更新我可以更新的内容,我会更好地了解新的热点。
如果您的手机上安装了 iOS5 测试版,并且 Xcode 4.0/4.1 不允许您在手机上构建:
这是因为 Xcode 需要从手机中抓取调试符号才能用于开发,但对于 iOS5 beta 设备,只有 Xcode beta 可以做到这一点,因此请按照以下步骤操作:
确保您的手机已插入并打开,并且您的配置文件/证书全部签出。
在 Xcode 4.0/4.1 中关闭项目。
在 Xcode 4.2 中打开项目备份,并检查管理器。您的手机旁边应该已经有一个绿点(假设您的所有配置都在工作),或者它应该正在收集调试符号。让它完成,然后构建您的项目。不需要构建成功,也不需要将应用安装到手机上,有时甚至不需要构建,Xcode 可以是一个善变的情妇。
在 Xcode 4.2 中关闭项目。
在 Xcode 4.0 中打开项目备份,您现在应该能够像往常一样构建并安装到您的手机上。
Xcode 4.0/4.1 现在应该能够使用您的设备进行开发,直到您重新启动计算机。
【讨论】:
您确定故事板向后兼容 iOS 4.x 吗?它使用诸如 UIStoryBoard 之类的类,这些类仅在 iOS 5 中可用。 刚刚检查过,故事板与 iOS 4 不兼容。不过,ARC 可以,这是我最近所有项目中使用的。【参考方案3】:解决办法在这里:
How can I fix "Freeform Size simulated metrics are not available prior to Xcode 4.2" warnings?
您只需要将您的xib文件的开发版本更改为Xcode 4.2(默认为Xcode 4.1)
【讨论】:
【参考方案4】:View Controller 和 Navigation Controller 设置或选项名称(属性检查器)
定义上下文(选中)未选中。
【讨论】:
以上是关于Xcode 4.2 在 IB 的选项卡栏上放置导航控制器时的警告的主要内容,如果未能解决你的问题,请参考以下文章
升级到 XCode 13(和 iOS 15)后选项卡和导航栏发生变化