未知的segue关系:使用NSCollectionView的原型

时间:2014-08-04 16:32:07

标签: storyboard swift nscollectionview xcode6

只需在故事板中添加NSCollectionView,代码就不会编译错误:未知的segue关系:原型

这是Swift / XCode6-beta4的已知错误还是我错过了什么?

4 个答案:

答案 0 :(得分:7)

这是一个已知错误,在release notes of Xcode 6 beta-5中提到(带有解决方法):

  

添加NSCollectionView后,故事板可能无法编译   它。 (17009377)!

     

解决方法:选择包含NSCollectionView的xib并加载它   进入基于故事板的视图。!

答案 1 :(得分:6)

Xcode 7 beta 6更新(see release notes):

Interface Builder支持10.11中的新NSCollectionView API,使用iOS上的dataSource和布局。 (18997303)

  • 解决方法:无法在Interface Builder中配置原型项。在代码中使用 - [NSCollectionView registerClass:forItemWithIdentifier:]或 - [NSCollectionView registerNib:forItemWithIdentifier:]。

有没有人曾尝试过使用它?我应该只在我的故事板上添加一个空的集合视图,然后为collectionviewitem创建一个nib文件,最后通过代码链接它吗?

Xcode 7.1 beta 3的更新

我今天已经下载并测试了新的测试版,问题仍然存在。然而,他们奇怪地删除了release notes中的变通方法说明,好像他们已经修复了它......

答案 2 :(得分:5)

当您已经在使用故事板时,实际上不需要创建额外的XIB文件。

  1. 删除NSCollectionViewNSCollectionViewItem

  2. 之间的联系
  3. 为视图项提供标识符

  4. 在您周围的NSViewController

  5. 中以编程方式设置项目原型
    @IBOutlet weak var collectionView: NSCollectionView!
    
    override func viewDidLoad() {
        self.collectionView.itemPrototype = self.storyboard?.instantiateControllerWithIdentifier("collectionViewItem")
            as NSCollectionViewItem
    }
    

    这样可以将所有UI视图保存在一个位置,从而提供了一个比使用外来XIB文件更好的解决方法。

答案 3 :(得分:3)

如果您使用的是OSX 10.11 SDK,Apple's release notes for it中的以下信息将指示不再填充itemPrototype属性(当然假设您的最低部署目标是10.11):

  

要使用NSCollectionView的新API模型,可以通过设置NSCollectionView的“collectionViewLayout”属性来指定布局,并提供“dataSource”或将CollectionView的“内容”绑定到NSArray或NSArrayController(请参阅“将内容绑定到NSCollectionView” “,下面)。您还必须断开并丢弃NSCollectionView的“itemPrototype”,这是10.10及更早版本的API模型的遗迹。