我的桌面视图可以使用UIRefreshControl
刷新。它工作正常。
当我点击UIRefreshControl
按钮(Edit
)时,我希望禁用UIBarButton
。我在尝试完全禁用UIRefreshControl
方面遇到了极大的困难。我已经知道我的表的内容肯定没有被刷新(这很好),但用户仍然能够下拉并显示spinny-symbol,然后简要显示。有什么方法可以隐藏这个spinny符号吗?
我尝试了很多东西:refreshControl.endRefreshing()
,refreshControl.isHidden = true
,refreshControl.removeFromSuperview()
,refreshControl = nil
......
这是我的一些代码。 (isInEditMode
是一个实例变量,在点击Edit
时为true,在点击Done
时为false。我相信这个布尔值设置正确,所以我不相信这是问题)。
func refreshTable(sender: UIRefreshControl) {
if !isInEditMode {
self.refreshControl.beginRefreshing()
refreshProfile()
// this works exactly as I want it to
}
else {
refreshControl.endRefreshing()
// OR refreshControl.isHidden = true
// OR refreshControl = nil
// OR refreshControl.removeFromSuperview()
// refreshProfile() not called, so table doesn't update, but the user can still pull down and the spinny icon shows. I do not want this.
}
}
编辑:我尝试了How do I "hide" a UIRefreshControl?中提出的所有解决方案,但没有一个解决了我的问题。可能是因为这篇文章很老了 - 2013年。 (或者因为我使用UIRefreshControl
的方式有所不同。该帖子中提出的主要解决方案是在UIRefreshControl
之后将nil
设置为endRefreshing()
。对我来说不起作用。我也尝试了建议将UIRefreshControl
的色调设置为clear
的hacky解决方案。并且如上所述,我还尝试了isHidden
和{{1}区分我的帖子和其他帖子的另一个因素是Objective-C的所有答案,而我对Swift 3感兴趣。(虽然我很确定我能够将该线程上的建议翻译成Swift。这不是重点,因为它们都不适合我。)
答案 0 :(得分:0)
在评论中的对话中,似乎答案是UIRefreshControl
中的UITableView
添加了多个viewDidAppear
。
视图控制器上的刷新控件属性是指添加的最新一个,并且可能正在被禁用。但是,表视图仍将保留任何以前添加的刷新控件,即使视图控制器不再具有对它们的引用。
修复方法是仅在viewDidLoad
期间添加刷新控件并禁用它,但在切换到编辑模式时将其保留在表格视图中,以便在离开编辑模式时可以重新启用它。