NSCollectionView网格只显示一行

时间:2017-07-09 21:28:31

标签: objective-c swift macos cocoa nscollectionview

我有一个带有以下参数的NSCollectionView:

enter image description here

自定义NSCollectionViewItem WebView以显示html网页

extension ViewController : NSCollectionViewDataSource {

    func numberOfSections(in collectionView: NSCollectionView) -> Int {
        return 5
    }

    func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
        return 1
    }

    func collectionView(_ itemForRepresentedObjectAtcollectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {

        let item = htmlNotificationsCollectionView.makeItem(withIdentifier: "htmlNotificationCollectionViewItem", for: indexPath)
        return item
    }
}

我的代码正在运行,但它只显示一个项目!并忽略numberOfSections以垂直显示

如果我将numberOfItemsInSection更改为3,则显示3个项目,但水平显示。

我需要这样的布局:

enter image description here

2 个答案:

答案 0 :(得分:0)

您应该以编程方式设置maximumNumberOfColumns:

let layout = NSCollectionViewGridLayout()
    layout.maximumNumberOfColumns = 1
    collectionView.collectionViewLayout = layout

(由于某些原因,当您在情节提要板上设置Grid属性时,它不起作用)

答案 1 :(得分:0)

NSCollectionViewGridLayout是单节布局。根据Apple文档,这意味着布局只能容纳一个部分。

  

一种布局,在行和列网格中显示单个部分的项目。

这就是为什么您没有获得更多内容的原因。

将其更改为NSCollectionViewFlowLayout以获取多个部分。希望对您有所帮助。