ios - UITableView 使用 UIRefreshControl 闪烁

标签 ios objective-c uitableview uiviewcontroller uirefreshcontrol

我在UIViewControllerviewDidLoad: 方法中定义了一个带有UIRefreshControlUITableView,如下所示:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.refreshControl = [[UIRefreshControl alloc] init];
    [self.refreshControl addTarget:self action:@selector(refreshMessages) forControlEvents:UIControlEventValueChanged];
    UITableViewController *tableViewController = [[UITableViewController alloc] init];
    tableViewController.tableView = self.messagesTableView;
    tableViewController.refreshControl = self.refreshControl;  
}

- (void)refreshMessages {
    //load data items
    if ([self.refreshControl isRefreshing]) {
        [self.refreshControl endRefreshing];
    }

    [self.messagesTableView reloadData];
}

我使用自动调整单元格来更新单元格数据。重新加载数据时,UITableView 会闪烁。有没有办法避免这种情况?

编辑 我已经链接了 video示例演示文件。 UITableView 重新加载数据,闪烁。我使用自动布局来更新动态单元格高度。

这是一个sample可以重现此问题的代码。应拉动 UITableView 进行刷新。 TableView 在主队列上重新加载。正在使用自动布局调整单元格的大小。


最佳答案

我今天遇到了同样的问题,我设法使用 CATransaction 解决了这个问题,这里是 Swift 中的代码片段,在 UITableViewController 中执行:

        CATransaction.begin()
        CATransaction.setCompletionBlock { () -> Void in
            /*wait for endRefreshing animation to complete 
              before reloadData so table view does not flicker to top 
              then continue endRefreshing animation */

            self.tableView.reloadData()
        }

        self.refreshControl!.endRefreshing()
        CATransaction.commit()

关于ios - UITableView 使用 UIRefreshControl 闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30315754/

相关文章:

iphone - iOS 中检查字符串是否是字符串列表之一的最有效方法是什么?

iphone - 我的 UITableView 上的这条线是什么?

ios - UITableView 行高基于单元格内容

android - 相应的错误:未定义对“OBJC_CLASS _ $ _ FBSession”的引用

ios - 当前 View Controller 时关闭 View Controller 的问题

ios - NSInvalidArgumentException :Pushing the same view controller instance more than once is not supported

ios - UIBezierPath 填充 UITableViewCell 中自定义 UIView 中的偏移量

iOS - 容器 View Controller Swift

ios - 如何在 Objective C 的 UI 导航栏上添加很棒的字体

ios - 限制 UItableView 的页眉 View 和页脚 View 的宽度