如何在情节提要中使用 UICollectionViewController 同时仍支持 ios 5.1?
Posted
技术标签:
【中文标题】如何在情节提要中使用 UICollectionViewController 同时仍支持 ios 5.1?【英文标题】:How to use UICollectionViewController in storyboard while still supporting ios 5.1? 【发布时间】:2012-11-01 11:52:34 【问题描述】:最佳做法是检测某个功能的类别是否存在并根据可用性降低用户的功能。我在 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];
以上对我来说似乎是一个非常合理的方法......
【问题讨论】:
【参考方案1】:我知道只放链接答案是不合适的,但她不可能包含整个文件。
请参阅this。
控制器旨在提供与 iOS 6 的 UICollectionController 相同的功能,但仍支持 iOS 4/5
开发者在说什么
PSTCollectionView 开源,100% API 兼容替代 iOS4.3+的UICollectionView
你想使用UICollectionView,但还需要支持iOS4/5? 那么你会爱上这个项目的。我最初写它是为了 PSPDFKit,我的 iOS PDF 框架,支持文本选择和 注释,但这个项目似乎对其他人有用 为自己保留 :) 另外,我会喜欢新的网格视图的涌入 停止。最好只编写布局管理器并建立在一个伟大的 代码库。
目标是在 iOS 4/5 上使用 PSTCollectionView 作为后备和 在 iOS6 上切换到 UICollectionView。我们甚至使用某些运行时技巧 在运行时为旧版本的 iOS 创建 UICollectionView。 理想情况下,您只需链接文件,一切都适用于旧版本 系统。实际上,这并不容易,尤其是当你 使用 UICollectionView 类的子类,因为它们不能 在运行时替换。
【讨论】:
如果你要推荐PSTCollectionView
,请推荐steipete的原始repo,因为他正在积极维护它:github.com/steipete/PSTCollectionView
这只是它的分叉。真正的来源和你提到的一样。表示如果有人试图引用链接,实际上是指您提供的链接。无论如何,我正在更改原始仓库的链接。感谢您指出:)
PSTCollectionView 轻而易举,感谢您的推荐。我刚刚替换了我的 UICollectionView 类引用,它就像一个魅力。【参考方案2】:
你不能。一旦您将集合视图控制器拖放到情节提要中,它将尝试自动引用它,这将导致您遇到编译错误。
【讨论】:
蹩脚,但我猜你仍然可以通过编程方式完成所有工作? 是的,您可以通过编程方式对其进行实例化。然而,在这种情况下,这是一场纯粹的噩梦。 :)【参考方案3】:对于通过故事板进行 6.0 之前的部署没有兼容性解决方案,但 PSTCollectionView 确实支持 iOS 5.0+ 并且正在积极维护。它在运行时可以在 6.0 及更高版本上使用 UICollectionView*
,并且应该与情节提要兼容。
【讨论】:
跟进这个答案:我最近开发了一个 iPad 应用程序,它使用 PSTCollectionView for iOS 5.1+ 支持 UICollectionView,效果很好。以上是关于如何在情节提要中使用 UICollectionViewController 同时仍支持 ios 5.1?的主要内容,如果未能解决你的问题,请参考以下文章
使用情节提要时如何在appDelegate中获取指向viewController的指针