【问题标题】:View-based NSTableView is only redrawn when focus is changed基于视图的 NSTableView 仅在焦点更改时重绘
【发布时间】:2019-04-11 16:54:23
【问题描述】:

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

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

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

我希望无论何时调用[tableView reloadData] 以及我的焦点在哪里,表格都会正确重绘,但在练习中,只有在我改变焦点后,所有内容才会消失并正确重绘

【问题讨论】:

标签: objective-c cocoa nstableview appkit reloaddata


【解决方案1】:

修复它。问题是从后台线程更新 GUI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多