【问题标题】:iOS 5.1 crashes when using collections viewiOS 5.1 在使用集合视图时崩溃
【发布时间】:2013-01-25 10:43:30
【问题描述】:

我正在尝试使用集合视图,我想支持 5.1。我没有使用故事板。我已将 collectionview 添加到我的视图控制器中。如果版本为 6.0 或更高版本,则我正在识别版本并打开集合视图,否则打开另一个视图控制器。当我在 5.1 中运行我的应用程序时,它立即崩溃并出现错误:

找不到符号:_UICollectionElementKindSectionHeader

我看到下面的链接仅描述了您使用故事板时的情况。 How to use UICollectionViewController in storyboard while still supporting ios 5.1?

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: ios ipad ios5 ios6


    【解决方案1】:

    您确定在项目的应用目标中已将部署目标设置为 iOS 5.1?

    这应该会导致以下情况:

    "...在早期版本中不可用的框架 API 将被弱链接..."

    (来自IPHONEOS_DEPLOYMENT_TARGET 的快速帮助)。

    如果它在启动时立即崩溃,这听起来好像不是弱链接。

    如果您确定已设置 iOS 5.1 的部署目标,您可以尝试强制整个 UIKit.framework 进行弱链接以解决问题。为此,您在链接框架和库部分将其标记为可选而不是必需:

    FWIW,我已经能够成功地完成您在 Mac OS X 应用程序中描述的操作:我有一个针对最新 SDK 构建的应用程序,在运行时检查 OS X 的版本并加载不同的 nib。在更高版本的 OS X 的 nib 中,我可以使用早期版本的 OS X 中不存在的 UI 元素。如果您的应用程序是基于 nib 的,我不明白为什么您不能这样做在 iOS 中也是如此。 (请注意,如果您使用的是故事板,那就是另一回事了)。

    这是一个如何设置的示例项目:

    http://www.markdouma.com/developer/CollectionViewFinagler.zip

    【讨论】:

    • 我的部署目标其实是5.0
    • 我在上面的链接中看到了示例,我的代码与示例非常相似,只是我额外使用了标题视图。我正在使用 if ([[[UIDevice currentDevice] systemVersion] floatValue]
    • 当我在集合视图中删除标题时,它可以完美运行任何想法吗?
    【解决方案2】:

    iOS5 不支持 UICollectionView。您只能将它与 iOS6 应用程序一起使用。抱歉,你运气不好。

    Here 是一个开源项目,它应该可以帮助你,正如它所定义的那样:

    开源,100% API 兼容替换 UICollectionView iOS4.3+

    【讨论】:

    • 他或她已经表示他们知道UICollectionView 仅在 iOS 6.0 及更高版本中可用:“我正在识别版本并打开集合视图,如果它是 6.0 或更高版本,否则打开另一个视图控制器。”如果项目已正确设置为 5.1 部署目标,则不应立即崩溃:UICollectionView 可用于 6.0 及更高版本,以及更早的其他内容...
    • @NSGod 我从来没有说过你不能在 6.0 和 5.1 中使用 CollectionView。我什至提供了一个链接,指向他们可以用于 6.0 之前的版本。
    • 如果您已经在使用PSTCollectionView 并看到此错误,那么您可能不小心使用了字符串UICollectionElementKindSectionHeader。相反,您应该使用PSTCollectionElementKindSectionHeader
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多