1

最佳实践是检测某个功能的类别是否存在并根据可用性降低用户的功能。我在 storyboard 中创建了 UICollectionView 和一个标准的 tableview 来支持 ios 5.1 用户。然后,我只需检查用户是否具有此功能并转到适当的场景。但是,当我现在尝试编译我的代码时,我得到一个“dyld:找不到符号:_UICollectionElementKindSectionHeader”这似乎是苹果的反模式,不允许在带有 ios 5.1 部署目标的情节提要中使用 ios6.0 功能。

if ([UICollectionView class]) {
    [self performSegueWithIdentifier:@"UserShow" sender:self];
} else {
    [self performSegueWithIdentifier:@"UserShowTable" sender:self];
}

以上对我来说似乎是一个非常合理的方法......

4

3 回答 3

3

我知道只放链接答案是不合适的,但她不可能包含整个文件。

请看这个

控制器旨在提供与 iOS 6 的 UICollectionController 相同的功能,但仍支持 iOS 4/5

开发商在说什么

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

你想使用 UICollectionView,但还需要支持 iOS4/5?那么你会爱上这个项目的。我最初是为 PSPDFKit编写的,这是我的 iOS PDF 框架,支持文本选择和注释,但这个项目似乎对其他人有用,以便为我自己保留它 :) 另外,我希望新的网格视图的涌入停止。最好只编写布局管理器并建立在出色的代码库上。

目标是在 iOS 4/5 上使用 PSTCollectionView 作为后备并在 iOS6 上切换到 UICollectionView。我们甚至使用某些运行时技巧为旧版本的 iOS 在运行时创建 UICollectionView。理想情况下,您只需链接文件,一切都可以在旧系统上运行。实际上,这并不容易,尤其是当您使用 UICollectionView 类的子类时,因为它们不能在运行时被替换。

于 2012-11-01T12:12:34.797 回答
2

你不能。一旦您将集合视图控制器放到情节提要中,它将尝试自动引用它,这将导致您遇到编译错误。

于 2012-11-01T12:04:53.557 回答
2

对于通过故事板进行 6.0 之前的部署没有兼容性解决方案,但PSTCollectionView确实支持 iOS 5.0+ 并且得到积极维护。它在运行时可以UICollectionView*在 6.0 及更高版本上使用,并且应该与情节提要兼容。

于 2012-11-02T06:00:50.013 回答