大纲列中的每一行代表一个项目,由项目特定图标表示(图片中全部相同),一个复选框,显示项目是否被选中,以及项目名称.我需要图标,复选框和名称出现在同一个单元格中,因此我使用的是基于视图的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的方法(即单元格视图已“结束编辑”).我还缺少其他一些基本观点吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。