我正在构建一个Cocoa
Swift
应用,该应用具有NSCollectionViews
,并且具有一个NSCollectionView
,其具有自定义NSCollectionViewItem
,其外观如下图所示。 / p>
我的目的是建立类似日历的内容,并且您从图像中了解到,我想更改日期值和日期字符串。甚至像下面这样尝试也无法实现,并且不了解它会产生什么影响。
这是我自定义的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
的UI元素无效。 / p>
如何解决此问题?有什么建议吗?
编辑:
我为NSCollectionViewItem
添加模型
var calendarModel: CalendarModel = CalendarModel() {
didSet {
dateNameString.stringValue = calendarModel.name
}
}
然后在控制器中将其更改为
collectionViewItem.calendarModel.name = "1231"
但从不影响。
预先感谢