NSTableview刷新异步加载数据
NSTableview refresh asynchronous loading of data
我在 XIB 中将 NSTableView 与 NSArrayController 连接起来。在我的应用程序中,我异步加载数据并连续调用 [_arrayController addObject:someNewObject]
。我原以为这会更新 NSTableView,但我必须在 foreground/background 之间切换应用程序才能看到更新。
所以我尝试通过添加以下语句之一让 NSTableView 在每个 addObject 上自行刷新
[_tableView reloadData]
[_tableView setNeedsDisplay:YES]
[_tableView display]
但是,NSTableView 在 运行 处于前台时不会自行刷新。
有什么想法吗?
你应该使用 Flux 架构并做出反应。
您创建数据存储,将数据存储在那里,然后创建对存储中的变化做出反应的订阅者。
这里有很棒的教程:http://www.raywenderlich.com/74106/mvvm-tutorial-with-reactivecocoa-part-1
在 AC 上尝试 rearrangeObjects
,但要注意 it's not synchronous 也一样。
因此,addObject
然后 rearrangeObjects
然后 dispatch_async
执行任何依赖于显示新对象的 tableView 的代码。链接中的示例 question/answer.
我在 XIB 中将 NSTableView 与 NSArrayController 连接起来。在我的应用程序中,我异步加载数据并连续调用 [_arrayController addObject:someNewObject]
。我原以为这会更新 NSTableView,但我必须在 foreground/background 之间切换应用程序才能看到更新。
所以我尝试通过添加以下语句之一让 NSTableView 在每个 addObject 上自行刷新
[_tableView reloadData]
[_tableView setNeedsDisplay:YES]
[_tableView display]
但是,NSTableView 在 运行 处于前台时不会自行刷新。
有什么想法吗?
你应该使用 Flux 架构并做出反应。
您创建数据存储,将数据存储在那里,然后创建对存储中的变化做出反应的订阅者。
这里有很棒的教程:http://www.raywenderlich.com/74106/mvvm-tutorial-with-reactivecocoa-part-1
在 AC 上尝试 rearrangeObjects
,但要注意 it's not synchronous 也一样。
因此,addObject
然后 rearrangeObjects
然后 dispatch_async
执行任何依赖于显示新对象的 tableView 的代码。链接中的示例 question/answer.