一旦用户离开ViewController而refreshControl仍然可见,我就无法隐藏refreshControl。我试过设置它从superView(tableView)中删除它,用新的替换它等等...当用户返回到屏幕时,问题仍然存在于tableView,顶部内容插入保留在refreshControl之前,它留下了一个空白区域tableView的顶部,如果我不替换/隐藏refreshControl,它将在此时可见。
有什么建议吗?
图片:Transition between screens, refreshControl does not hide on viewDidDisappear
答案 0 :(得分:1)
试试这个: -
exit()
答案 1 :(得分:0)
当您展示新屏幕时,只需使用.endRefreshing()
上的refreshControl
。
答案 2 :(得分:0)
初始化刷新控件:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:MainWindowVM></local:MainWindowVM>
</Window.DataContext>
<Grid>
<syncfusion:MenuAdv Width="300" Height="40" ItemsSource="{Binding League}" ExpandMode="ExpandOnMouseOver">
<syncfusion:MenuAdv.ItemTemplate >
<HierarchicalDataTemplate DataType="local:MenuList" ItemsSource="{Binding Teams}" >
<StackPanel Orientation="Vertical" VerticalAlignment="Top" >
<Label Content="{Binding Name}" Height="Auto" FontFamily="Arial" FontSize="12" VerticalAlignment="Top" Margin="0,3,0,0" VerticalContentAlignment="Center"/>
</StackPanel>
</HierarchicalDataTemplate>
</syncfusion:MenuAdv.ItemTemplate>
</syncfusion:MenuAdv>
</Grid>
</Window>
处理刷新并结束刷新:
lazy var refreshControl: UIRefreshControl = {
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action:
#selector(ViewController.handleRefresh(_:)),
for: UIControlEvents.valueChanged)
refreshControl.tintColor = UIColor.red
return refreshControl
}()
添加刷新控件:
func handleRefresh(_ refreshControl: UIRefreshControl) {
self.tableView.reloadData()
refreshControl.endRefreshing()
}
答案 3 :(得分:0)
我联系了一位朋友,给出了一个非常好的答案。这是帮助我顺利删除refreshControl的代码,以防它在屏幕上处于冻结状态:
func forceHideRefreshControl(tableView: UITableView) {
if tableView.contentOffset.y < 0 { // Move tableView to top
tableView.setContentOffset(CGPoint.zero, animated: true)
}
}
虽然视图控制器尚未完成加载,但它不会显示refreshControl。为此你需要再次调用beginRefreshing(),但我会延迟这样做以避免任何动画问题。无论如何,我认为这是实际去除顶部白色间距的最佳解决方案。我不知道为什么endRefreshing()没有用,但至少我找到了另一种方法。希望这有助于任何人! :)
注意:但是,此解决方案仅在卡住/冻结的refreshControl上进行测试。我不知道如果你没有这个问题会有什么影响,但仍然使用这个解决方案来隐藏refreshControl。