【发布时间】:2025-12-19 13:35:06
【问题描述】:
我有一个NSTableview,其内容绑定到NSArrayController。
并且它的selectionIndexes 绑定到arrayController 的selectionIndexes。
并且这个 arrayController 绑定到了一个NSManagedObjectContext。
因为arrayController的selectsInsertedObjects为真,所以当我向NSManagedObjectContext添加对象时,tableViewSelectionDidChange(_ notification: Notification)会被调用。我在这里设置断点并在控制台中调试(我将tableview的委托设置为自身):
(lldb) po selectedRow
11
(lldb) po selectedCell()
nil
(lldb) po numberOfColumns
2
(lldb) po numberOfRows
12
(lldb) po view(atColumn: 0, row: 0, makeIfNecessary: false)
nil
(lldb) po view(atColumn: 0, row: selectedRow, makeIfNecessary: false)
nil
我可以在表格视图中看到薮行。
但是为什么po view(atColumn: 0, row: 0, makeIfNecessary: false) 返回零?
如何在委托方法tableViewSelectionDidChange(_ notification: Notification) 中获取选中的行?
【问题讨论】:
-
选中的行是11。单元格视图被重用。表格视图可以创建一个视图来绘制所有行。你想完成什么?
-
@Willeke 我想获取选定的行并更改其属性。不要创建一个新的。
-
更改
tableView(_:viewFor:row:)中的属性。 -
@Willeke 我想在选择特定行时进行更改。
-
你想改变什么?视图的属性还是数据的属性?
标签: swift macos nstableview