当我重新加载部分时,没有动画的Tableview仍然会抖动

时间:2018-04-20 13:46:35

标签: ios swift animation tableview

在tableview的部分中。我有一些可选择的行。 在该部分的标题内,我有一个Deselect All按钮。

如果选择了行,则需要启用deselect all按钮,如果未选择任何行,则需要禁用。 通过读取布尔值来启用/禁用该按钮。我在布尔值上有一个didSet

var shouldEnableDeselectButton = false
    {
        didSet{
            if oldValue != shouldEnableDeselectButton{
                DispatchQueue.main.async {
                    self.notesTable.reloadSections([self.indexofFilter], with: .none)
                }
            }
        }
    }
  • 如果我在didSet中完全没有做任何事情,那么它只会通过出列或向上或向下滚动并离开屏幕来更新。 见下文:

enter image description here

  • 如果我self.notesTable.reloadSections([someSection], with: .none),则更长时间要求部分标题出列。然而,如果我选择其中一个最后行,那么它会严重抖动: 见下文:

enter image description here

我在线查看并找到了Reload tableview section without scroll or animation提到的解决方案,但它们仍然抖动

1 个答案:

答案 0 :(得分:0)

需要做两件事:

  1. 获取headerView的引用/指针。例如。 this回答。

  2. 将您的按钮设为属性。我最初只是作为一个子视图。那还不够! 为此,我将sectionHeader设为Date子类,然后将该按钮添加为属性。

  3. 然后我只能更改按钮的func applicationDidEnterBackground(_ application: UIApplication) { // Your application can present a full screen modal view controller to // cover its contents when it moves into the background. If your // application requires a password unlock when it retuns to the // foreground, present your lock screen or authentication view controller here. let blankViewController = UIViewController() blankViewController.view.backgroundColor = UIColor.black // Pass NO for the animated parameter. Any animation will not complete // before the snapshot is taken. window.rootViewController?.present(blankViewController, animated: false) } func applicationWillEnterForeground(_ application: UIApplication) { // This should be omitted if your application presented a lock screen // in -applicationDidEnterBackground: window.rootViewController?.dismiss(animated: false) false } 属性。