0

我正在构建一个Cocoa Swift应用程序,该应用程序具有NSCollectionViews并且NSCollectionView具有自定义NSCollectionViewItem功能,如下图所示。

在此处输入图像描述

我的目的是构建类似于日历的东西,正如您从图像中了解的那样,我想更改日期值和日期字符串。即使像下面这样尝试也无法实现,也不明白它有什么效果。

这是我的自定义 NSCollectionViewItem

class CalendarDateCell: NSCollectionViewItem {

    
    @IBOutlet weak var dateNameString: NSTextField!
    @IBOutlet weak var dateNumberString: NSTextField!
    
    
    override func loadView() {
        super.loadView()
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do view setup here.
    }
    
}

这是我的itemForRepresentedObjectAt功能。

func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
        // 4
        let item = calendarCollectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "CalendarDateCell"), for: indexPath)
        guard let collectionViewItem = item as? CalendarDateCell else {return item}
        
        
        
        switch indexPath.item % 3 {
        case 0,1:
            collectionViewItem.dateNameString.stringValue = "0-1"
        case 2:
            collectionViewItem.dateNameString.stringValue = "3"
        default:
            break
        }
        
        return collectionViewItem
    }

我尝试了它进行测试,UI 完成了工作,但我没有将属性NSCollectionViewItem更改为NSIndexPath

然后我添加了一个String变量NSCollectionViewItem并用方法观察它,didSet我可以更改变量,但它对AppKit.

我该如何解决这个问题?有什么建议么?

编辑:

我添加了一个模型NSCollectionViewItem

var calendarModel: CalendarModel = CalendarModel() {
        didSet {
            dateNameString.stringValue = calendarModel.name
        }
    }

然后在控制器中将其更改为

collectionViewItem.calendarModel.name = "1231"

但从不影响。

提前致谢

4

0 回答 0