为每个数据源保留(和加载)表视图滚动位置

时间:2020-12-30 16:24:20

标签: swift cocoa nstableview appkit nsscrollview

我正在尝试在我的应用中复制 Mail.app 行为。如果您有多个电子邮件帐户并为每个帐户随机选择一个电子邮件并从侧边栏中的每个帐户之间切换,该应用程序会记住您的滚动位置以及您选择的电子邮件并相应地显示它们。这就是我想要的应用程序。

我知道如何保留行选择,这很容易。 tableView.selectedRowIndexes

我的 tableView 有多个数据源,并从侧边栏相应地切换 (tableView.reloadData())。

我在滚动位置方面遇到了重大问题。我尝试查看 NSScrollViewNSClipViewNSTableView。在我看来,每个视图都有滚动机制。

  1. 我需要记住用户滚动每个数据源时的滚动位置
  2. 我需要在用户返回数据源时加载上一个滚动位置

另外一个我注意到的奇怪行为是,当将 tableView 重新加载到不同的数据源时,它似乎一直记得以前的数据源滚动位置。这是正常的吗?我以为它会重置到顶部。

我的数据源是数组,它们是我的 NSViewController 子类属性。

如果重要的话,我使用的是故事板,我的应用面向 Big Sur 而我使用的是 Swift。

1 个答案:

答案 0 :(得分:1)

保存位置:

def callback():  
  cell="\n IMAGE FILE NOT UPLOADED..."  
  try:
    model = load_model('a95e30model.h5')
    #model.summary()
    test_image=image.load_img(red("upload"),target_size=(50,50,3))
    #imgplot = plt.imshow(test_image)
    #plt.show()
    test_image=image.img_to_array(test_image)
    test_image=expand_dims(test_image,axis=0)
    result = model.predict(test_image)
    result=ndarray.round(result)
    cell="PARASITIZED" if result[0][1]==1 else "UNINFECTED"
    output.set("\n "+cell+" CELL DETECTED !\n");print(cell)
  except:
    output.set(cell);print("EXCEPTION")

恢复:

preservedPosition = tableView.visibleRect.origin
相关问题