我正在构建一个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"
但从不影响。
提前致谢