首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用NSCollectionView设置标题

用NSCollectionView设置标题
EN

Stack Overflow用户
提问于 2016-01-15 00:52:00
回答 2查看 1.6K关注 0票数 2

我正在使用NSCollectionView,CollectionView有标题。我需要为每个标题设置一个特定的标题。

我的代码:

代码语言:javascript
复制
func collectionView(collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> NSView {
        var view: NSView?
        if kind == NSCollectionElementKindSectionHeader {
            view = collectionView.makeSupplementaryViewOfKind(kind, withIdentifier: "Header", forIndexPath: indexPath)
        }
        ...
        return view!
    }

HeaderNSCollectionViewItem

代码语言:javascript
复制
import Cocoa

class Header: NSCollectionViewItem {

    var title: String!
    ...
    //Write title value in a textField
    ...
}

我的问题是:如何从viewForSupplementaryElementOfKind设置标题值

我需要这样的东西:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-15 02:31:19

这里有点棘手,我希望苹果能尽快通过更好地利用NSCollectionViewItem来改进它的API

实际上,从示例代码CocoaSlideCollection中,显示带有可变文本的标题的方法是查看标题视图的子视图并获得对NSTextField的引用,然后设置stringValue

与Swift合作:

  1. 创建一个HeaderView,它是NSView的一个子类
  2. HeaderView设置为查看报头nib
  3. HeaderView中,实现这个变量titleTextField 惰性变量titleTextField: NSTextField?={ self.subviews中的视图{ if视图是NSTextField {返回视图为?NSTextField }}返回nil }()
  4. viewForSupplementaryElementOfKind委托方法中,执行以下操作 如果让视图= collectionView.makeSupplementaryViewOfKind(kind,withIdentifier: nibName!,forIndexPath: indexPath?HeaderView { view.titleTextField?.stringValue =“报头自定义值”}返回视图
票数 2
EN

Stack Overflow用户

发布于 2016-04-25 11:46:08

我就是这样用的:

代码语言:javascript
复制
func collectionView(collectionView: CollectionView,viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> CollectionHeaderView!
{
    switch kind
    {
        case NSCollectionElementKindSectionHeader:  let contactsCollectionHeaderView                            = collectionView.makeSupplementaryViewOfKind(kind,withIdentifier:"ContactsCollectionHeader",forIndexPath:indexPath) as! ContactsCollectionHeaderView
                                                    contactsCollectionHeaderView.titleTextField?.stringValue    = self.collectionView(collectionView, titleForHeaderInSection:indexPath.section) ?? ""
                                                    return contactsCollectionHeaderView

        case "NSCollectionElementKindSelectionRectIndicator": return nil

        default:                                    return nil
    }

请注意,当前委托的方法签名是错误的,返回的视图实际上是可选的,否则您无法返回像上面的矩形指示符那样的特殊defind类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34802573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档