diff options
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs index 5483a169..7cd691f9 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs @@ -41,6 +41,7 @@ namespace Xamarin.Forms.Platform.iOS FormsUITableViewController _tableViewController; IListViewController Controller => Element; ITemplatedItemsView<Cell> TemplatedItemsView => Element; + public override UIViewController ViewController => _tableViewController; public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) { @@ -927,7 +928,7 @@ namespace Xamarin.Forms.Platform.iOS ITemplatedItemsList<Cell> GetSectionList(int section) { - return (ITemplatedItemsList<Cell>)((IList)TemplatedItemsView.TemplatedItems) [section]; + return (ITemplatedItemsList<Cell>)((IList)TemplatedItemsView.TemplatedItems)[section]; } void OnSectionPropertyChanged(object sender, PropertyChangedEventArgs e) @@ -1015,6 +1016,7 @@ namespace Xamarin.Forms.Platform.iOS readonly ListView _list; IListViewController Controller => _list; UIRefreshControl _refresh; + bool _refreshingEventSent; bool _refreshAdded; @@ -1089,6 +1091,14 @@ namespace Xamarin.Forms.Platform.iOS public override void ViewWillAppear(bool animated) { + base.ViewWillAppear(animated); + + if (_list.IsRefreshing && _refresh.Refreshing) + { + // Restart the refreshing to get the animation to trigger + UpdateIsRefreshing(false); + UpdateIsRefreshing(true); + } } protected override void Dispose(bool disposing) @@ -1114,8 +1124,13 @@ namespace Xamarin.Forms.Platform.iOS void OnRefreshingChanged(object sender, EventArgs eventArgs) { - if (_refresh.Refreshing) + if (_refresh.Refreshing && !_refreshingEventSent) + { Controller.SendRefreshing(); + _refreshingEventSent = true; + } + else if (!_refresh.Refreshing) + _refreshingEventSent = false; } void RemoveRefresh() |