我有一个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
我可以在tableview中看到serval行。
但为什么po view(atColumn: 0, row: 0, makeIfNecessary: false)
返回nil?
如何在委托方法tableViewSelectionDidChange(_ notification: Notification)
中获取所选行?
答案 0 :(得分:0)
我怀疑表格视图在更新其布局之前发布NSTableViewSelectionDidChangeNotification
。因此,在创建子视图之前,您要在表视图中查询子视图。
这是makeIfNecessary
参数的用途。试试这种方式:
po view(atColumn: 0, row: selectedRow, makeIfNecessary: true)