UIRefreshControl在Xamarin iOS上崩溃

时间:2017-03-01 06:44:54

标签: ios uitableview xamarin xamarin.ios

这应该不是问题,看看Stackoverflow上的所有答案,但我无法找到如何使用UITableView(不是TableViewController )来做到这一点。我使用以下代码

 if (UIDevice.CurrentDevice.CheckSystemVersion(6, 0))
 {
    _refreshControl = new UIRefreshControl();
    _refreshControl.ValueChanged += OnRefreshRequested;
    ResultsTableView.RefreshControl = _refreshControl;
 }

并注意到有一条警告说该行

ResultsTableView.RefreshControl = _refreshControl;

仅适用于API 10及更高版本?我认为这可能是Xamarin Studios的许多怪癖之一,但是看到它实际上会在任何小于10的操作系统版本上崩溃。除了

NSInvalidArgumentException', reason: '-[UITableView setRefreshControl:]: 
unrecognized selector sent to instance 0x15f420c00'

我想了解一下我如何在低于10的操作系统版本中添加刷新控件的帮助。

谢谢。

2 个答案:

答案 0 :(得分:7)

希望这将有助于任何仍在努力解决这一问题的人。我必须在我的ViewController顶部声明以下内容

UIRefreshControl refreshControl;

然后我在尝试设置刷新控件时执行了以下操作:

refreshControl = new UIRefreshControl(); 
refreshControl.AddTarget((sender, args) => GetData(), UIControlEvent.ValueChanged); 

if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0)) 
{ 
    TableView.RefreshControl = refreshControl; 
} else { 
    TableView.AddSubview(refreshControl); 
}

然后,我只需引用RefreshControl

,而不是引用TableView上的refreshControl

答案 1 :(得分:-1)

Apple docs

  

因为刷新控件专门设计用于由表视图控制器管理的表视图,所以在不同的上下文中使用它会导致未定义的行为。

     

SDK iOS 6.0 +