如何"隐藏"UIRefreshControl?

Dou*_*ith 31 objective-c ios uirefreshcontrol

偶尔我的表视图将不会连接到要刷新的服务,在这种情况下,我不希望UIRefreshControl存在.

我在viewDidLoad中添加它后,我尝试在某些情况下隐藏它setEnabled:,setHidden:但似乎都没有效果.

Jon*_*ast 38

尝试将表视图控制器的refreshControl属性设置为nil.

  • 好的,我建议在删除之前在刷新控件上调用`endRefreshing`.您也可以尝试在`viewWillAppear`而不是`viewDidAppear`中执行此操作. (4认同)

Svi*_*miv 10

试试这个:

[self.refreshControl removeFromSuperview];
self.refreshControl = nil;
Run Code Online (Sandbox Code Playgroud)


Ser*_*uca 9

你有几种方法可以做到这一点.我认为最好的方法是使用以下方法检查viewDidLoad方法:

if (condition){
 //attach refreshControl
}
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,最好的方法是把这个代码放在你要隐藏刷新的地方(我认为在if条件下的viewWillAppear方法)

//End refresh control
[self.refreshControl endRefreshing];
//Remove refresh control to superview
[self.refreshControl removeFromSuperview];
Run Code Online (Sandbox Code Playgroud)


Pau*_* T. 6

我在 settableView.refreshConrol = nil时体验不好,因为当我将它设置回 old 时refreshControl,它只在一秒钟内启动动画,所以看起来不太好,所以当我需要禁用时,refreshControl我使用:

tableView.refreshControl?.endRefreshing()
tableView.refreshControl?.alpha = 0
Run Code Online (Sandbox Code Playgroud)

当我需要它时,我使用:

tableView.refreshControl?.alpha = 1
// and if I need to show refreshing indicator immediately I write:
tableView.refreshControl?.beginRefreshing()
Run Code Online (Sandbox Code Playgroud)

PS设置isHidden, isEnabled, isUserInteractionEnabled没有帮助


小智 5

您可以尝试一个非常简单的解决方案: [self.refreshControl removeFromSuperview];