NSCollectionView,Swift 4 - 无法调用"注册"

spa*_*h21 3 nscollectionview nscollectionviewitem swift swift3 swift4

任何人都可以建议如何解决这个NSCollectionView问题?从Swift 3转换为Swift 4并且魔术开始发生:)

码:

let item = NSNib(nibNamed: NSNib.Name(rawValue: "MACollectionViewItem"), bundle: nil)
collectionView.register(item, forItemWithIdentifier: "CollectionViewItem")
Run Code Online (Sandbox Code Playgroud)

第二行错误:

无法register使用类型的参数列表调用' ''(NSNib?, forItemWithIdentifier: String)'

Tam*_*gel 7

在Swift 4中,您需要使用NSUserInterfaceItemIdentifier而不是a String来标识用户界面元素.

您应该为标识符定义静态常量,并在注册nib时引用它们.

例:

extension NSUserInterfaceItemIdentifier {
    static let collectionViewItem = NSUserInterfaceItemIdentifier("CollectionViewItem")
}

collectionView.register(item, forItemWithIdentifier: .collectionViewItem)
Run Code Online (Sandbox Code Playgroud)

  • 您还可以为标识符定义静态常量,比较 /sf/answers/3186445671/ 的类似问题。据我了解,这是推荐的模式。 (2认同)