大纲列中的每一行代表一个项目,由项目特定图标表示(图片中全部相同),一个复选框,显示项目是否被选中,以及项目名称.我需要图标,复选框和名称出现在同一个单元格中,因此我使用的是基于视图的NSOutlineVIEw.
我已经实现了NSOutlineVIEwDataSource协议来为大纲视图提供数据.
方法outlineVIEw:objectValueFortableColumn:byItem:提供一个自定义对象,该对象具有选中的BOol属性和Nsstring * name.
我在IB中的自定义表单元格视图组成如下:
我将复选框值绑定到objectValue.selected,将标签值绑定到objectValue.name.
正如我所希望的那样,大纲视图很好地显示了objectValue提供的名称和选择状态.
但是,如果我更改复选框的状态,则在我的dataSource中不会触发在NSOutlineVIEwDataSource协议中定义的方法outlineVIEw:setobjectValue:fortableColumn:byItem:以提供新更改的对象值.请注意,如果我不使用单元格的自定义视图,则此方法有效.
通过将NSLog语句插入到作为objectValue传递的对象的setSelected方法中,单击复选框,检查表单元格视图的objectValue.selected是否实际更改.所选成员正确更改状态.
如何将objectValue的更改传播回我的dataSource模型?我已经检查了NSOutlineVIEw的委托方法,但找不到通过我的复选框发信号通知单元格视图的objectValue的方法(即单元格视图已“结束编辑”).我还缺少其他一些基本观点吗?
解决方法 setobjectValue不适用于基于视图的:来自标题::
/* VIEw Based OutlineVIEw: This method is not applicable. */- (voID)outlineVIEw:(NSOutlineVIEw *)outlineVIEw setobjectValue:(ID)object fortableColumn:(NStableColumn *)tableColumn byItem:(ID)item;总结
以上是内存溢出为你收集整理的objective-c – 在基于视图的NSOutlineView中更改NSTableCellView的objectValue不会传播到dataSource全部内容,希望文章能够帮你解决objective-c – 在基于视图的NSOutlineView中更改NSTableCellView的objectValue不会传播到dataSource所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)