如何让 UIRefreshControl 在隐藏后重新出现?

Posted

技术标签:

【中文标题】如何让 UIRefreshControl 在隐藏后重新出现?【英文标题】:How do I make a UIRefreshControl reappear after hiding it? 【发布时间】:2014-01-23 10:31:49 【问题描述】:

我设置了 UITableViewController 和 UIRefreshControl。 refreshControl 工作并重新加载 tableView。问题是我的 tableView 上方有一个 UISegmentedControl,它使用不同的数据重新加载 tableView,具体取决于您单击的段。现在我只希望 refreshControl 能够在第一段(这也是默认值)上工作,并且我想为其他两个 UISegmentedControl 元素禁用它。这是 tableView 的屏幕截图:

现在,我只需通过设置 self.refreshControl = nil 来隐藏它,这可以正常工作。问题是,一旦我完成了该操作(通过单击其他 UISC 元素之一),我就无法让它在默认表中恢复工作。我尝试在选择@"Aktuelle Rezepte" 元素后简单地重置self.refreshControl = savedRefreshControl,但这不起作用。我进一步尝试使用

简单地禁用和隐藏它
[self.refreshControl setEnabled:NO];
[self.refreshControl setHidden:YES];

然后在需要时重置这两个,但这也不起作用。你怎么认为?我完全错过了什么吗?

【问题讨论】:

【参考方案1】:

我找到了答案 - 这是一个愚蠢的错误。我在 UITableViewController 的顶部声明了savedRefreshControl,但将其属性设置为(weak, nonatomic) 而不是(strong, nonatomic),这就是重置self.refreshControl 不起作用的原因。 正如其他帖子中提到的那样,请确保在它仍在刷新时不要执行 self.refreshControl = nil,因为它会搞砸应用程序和刷新逻辑。

【讨论】:

以上是关于如何让 UIRefreshControl 在隐藏后重新出现?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在获取数据完成时(在 Swift 中)隐藏我的 UIRefreshControl?

类似于 UIRefreshControl 将隐藏的 UIView 添加到 UITableView

从 Firebase 完成加载后如何使 UIRefreshControl 结束刷新

如何重启 UIRefreshControl 动画?

使用 RxSwift 刷新后绑定到 UIRefreshControl

拉入 UICollectionView 后 UIRefreshControl 不粘