仅在更改焦点时才重绘基于视图的NSTableView

问题描述 投票:0回答:1

我正在编写一个简单的带有GUI的Cocoa应用程序,它只包含一个简单的表,其数据有时可能会更新。但是当数据实际更新时,大多数情况下表的行完全消失。但是一旦我改变了焦点(如果我的应用程序是主窗口则单击桌面,或者如果不是,则单击应用程序窗口),一切都正常显示

数据在一个单独的单例类中处理,该类运行一个实际查看数据源的线程,并在数据更改时发布NSNotification。窗口控制器接收该通知,提取新数据并触发[tableView reloadData] - 这就是问题开始的地方

窗口控制器是表的数据源和委托,并实现numberOfRowsInTableView方法和viewForTableColumn方法。当问题发生时,调用numberOfRowsInTableView并返回非零值,但是根本不调用viewForTableColumn

我希望无论何时调用[tableView reloadData]以及我关注的地方都要正确地重绘表格,但是在实践中,只有在我改变焦点后,一切都会消失并正确地重新绘制

objective-c cocoa nstableview appkit reloaddata
1个回答
0
投票

固定它。问题是从后台线程更新GUI

© www.soinside.com 2019 - 2024. All rights reserved.