【问题标题】:How to fix this 'Prototype Segue' related with my NSCollectionView (Xcode 7.0 beta)如何修复与我的 NSCollectionView (Xcode 7.0 beta) 相关的“原型 Segue”
【发布时间】:2015-06-11 15:55:33
【问题描述】:

所以我一直想用 Swift 编写一个需要 Collection View 的 OSX 程序。与 OSX 一样,它不使用 UICollectionView 而是使用 NSCollectionView(顺便说一句,如果您知道任何将这些与 Swift 一起使用的教程,将不胜感激!)。

问题是:我在情节提要中放置了一个“集合视图”,使其成为我的初始控制器,并且在创建视图时,它还在情节提要上创建了一个 NSCollectionViewItem。在 Xcode 6 中,原型项目绝对与情节提要的任何其他元素无关,但现在在 Xcode 7 中,它是使用“Prototype Segue”创建的。

问题:编译时出现此错误:

Unknown segue relationship : Prototype

有人知道如何解决它吗?

提前谢谢,对不起我的英语--'

【问题讨论】:

    标签: xcode macos swift segue nscollectionview


    【解决方案1】:

    看来您必须手动指定连接。

    1. 将“collectionViewItem”Storyboard ID 添加到您的收藏视图项。

    1. 将以下代码添加到 Collection View 控制器的 viewDidLoad 方法(Swift 示例):

      self.collectionView.itemPrototype = self.storyboard!.instantiateControllerWithIdentifier("collectionViewItem") as! NSCollectionViewItem
      

    【讨论】:

    • 从 Xcode 7 beta 6 开始不再可能。如果您设置 itemPrototype,Xcode 将显示以下错误:无法在 (NSWindow) 上设置 (contentViewController) 用户定义的检查属性:使用 -registerNib:forItemWithIdentifier: 和 -registerClass:forItemWithIdentifier: with new CollectionViews
    • 正如@gbdavid 所说,我真的不明白他们为什么关闭这个选项,因为他们添加了故事板......现在使用笔尖。欢迎对答案进行一些编辑。
    【解决方案2】:

    从 XCode 7.2 和 OSX 10.11 开始,问题仍然存在,解决此问题的唯一方法是创建基于 nib 的集合视图单元格并调用方法 - (void)registerNib:(nullable NSNib *)nib forItemWithIdentifier:( NSString *) 集合视图上的标识符。

    【讨论】:

    • 这很糟糕。但最糟糕的是,“registerNib”功能仅在 OS X 10.11 之后才可用。那么我现在真的无法创建集合视图吗?不敢相信。
    • @Lubos OS X 的 Cocoa API 的状态是绝对可怕的。开始使用 Objective-C for iOS 进行开发后,我明白为什么人们说他们讨厌 Cocoa。与 OS X 对应的混乱相比,整个 iOS API 似乎被改进了 100 倍。也许只是我,习惯了 iOS 的 API,但 OS X 似乎被一些早就应该被弃用的东西污染了,奇怪的命名约定 NSZeroSize(不是 NSSizeZero)及其 Rect 和 Point 对应物,以引起人们对冰山一角。
    猜你喜欢
    • 2014-09-27
    • 1970-01-01
    • 2015-12-05
    • 2015-08-28
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多