我正在编写一个简单的带有GUI的Cocoa应用程序,它只包含一个简单的表,其数据有时可能会更新。但是当数据实际更新时,大多数情况下表的行完全消失。但是一旦我改变了焦点(如果我的应用程序是主窗口则单击桌面,或者如果不是,则单击应用程序窗口),一切都正常显示
数据在一个单独的单例类中处理,该类运行一个实际查看数据源的线程,并在数据更改时发布NSNotification。窗口控制器接收该通知,提取新数据并触发[tableView reloadData]
- 这就是问题开始的地方
窗口控制器是表的数据源和委托,并实现numberOfRowsInTableView
方法和viewForTableColumn
方法。当问题发生时,调用numberOfRowsInTableView
并返回非零值,但是根本不调用viewForTableColumn
我希望无论何时调用[tableView reloadData]
以及我关注的地方都要正确地重绘表格,但是在实践中,只有在我改变焦点后,一切都会消失并正确地重新绘制
固定它。问题是从后台线程更新GUI