gpt4 book ai didi

macos - 如何知道 NSTableView 何时完成(重新)加载其内容?

转载 作者:行者123 更新时间:2023-12-03 16:19:38 24 4
gpt4 key购买 nike

我有一个看起来与邮件应用程序类似的用户界面。左侧的表格 View 带有单列项目。当选择左侧的其中一项时,有关该项目的详细信息将显示在右侧。

当我的应用程序中发生某些需要重新加载左 TableView 中的数据的事件时,当前选择将丢失,然后右侧详细 View 和左侧主视图不同步。

我希望解决这个问题的方法是,当需要重新加载表数据时,我会:1. 保存当前选择的项目2.重新加载表数据3. 处理委托(delegate)方法或通知,让我知道重新加载何时完成。4. 通过在表中的新项目列表中查找正确的项目来重新选择该项目。

不幸的是,我找不到任何方法来确定表何时完成重新加载。有没有。有什么方法可以解决这个问题,或者b。这个问题有更优雅的解决方案吗?

谢谢。

<小时/>

更新:如果我的问题不清楚,请想象您在邮件应用程序中并且选择了一些消息。该摘要单元格在左侧显示为选定状态,而消息的详细信息显示在右侧。假设收到新邮件,并在表格顶部显示为新单元格。您当前正在查看的消息是如何保留而不是取消选择的?

最佳答案

reloadData 是一把大锤。 10.7 提供了更好的解决方案。

当您要添加新行时,请使用 insertRowsAtIndexes:withAnimation: ,而不是使用 reloadData 。当您有要删除的行时,请使用 removeRowsAtIndexes:withAnimation: 。当然,如果现有行已更改,则可以使用 reloadDataForRowIndexes:columnIndexes

这些应该会记住您的选择(至少 iOS 上的等效项会记住)。

如果您无法以 10.7 为目标,其他一些建议可能会有所帮助。 noteNumberOfRowsChanged 也可能有帮助,但我没有实际使用它。

关于macos - 如何知道 NSTableView 何时完成(重新)加载其内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com