Swift:NSCollectionViewItem属性不变

我正在构建一个Cocoa Swift应用,该应用具有NSCollectionViews,并且具有一个NSCollectionView,其具有自定义NSCollectionViewItem,其外观如下图所示。 / p>

Swift: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的UI元素无效。 / p>

如何解决此问题?有什么建议吗?

编辑:

我为NSCollectionViewItem添加模型

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

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

collectionViewItem.calendarModel.name = "1231"

但从不影响。

预先感谢

iCMS 回答:Swift:NSCollectionViewItem属性不变

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2012914.html

大家都在问