有没有办法将NSArrayController
的内容数组绑定到非技术上不是数组的自定义对象,但其行为如同一个?将NSArrayController的内容数组绑定到一个自定义(非数组)对象
具体而言,我试图将NSTableView
绑定到PDFDocument
(因此,该表中的每行为PDFPage
)。 PDFDocument
不是数组,但有许多相同类型的方法(如insertPage:atIndex:
,removePageAtIndex:
等)。
我最终想写一个包装,将PDFDocument
的方法转换为NSMutableArray
的方法,但我不确定要采取什么方法。我做了一些尝试,绑定似乎不能正常工作。
或者更具体地说,将表绑定到PDFDocument
的页面以模仿PDFThumbnailView
(对于那些了解PDFKit的人)的任何方式?
谢谢!
非常感谢这么一个彻底的答案 - 令人难以置信。我确实试图通过绑定来改变'PDFDocument',这就解释了为什么它不起作用。子类的想法听起来像是首先尝试的最佳方法。再次感谢你的帮助。 –
如果您试图让绑定变更文档,那么您需要实现索引集合变异访问器:'-insertObject:inPagesAtIndex:'或'-insertPages:atIndexes:'和'-removeObjectFromPagesAtIndex之一:'或'-removePagesAtIndexes:'。那些可以调用不符合KVC或KVO预期的超类方法。如果你实现了这些,你不必也不应该调用'-willChange ...'或'-didChange ...'。这是因为KVO已经知道要挂钩这些方法来自动生成更改通知。这可以通过一个类别完成。 –