diff options
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs index 2db8ac26..4ec16967 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs @@ -26,6 +26,9 @@ namespace Xamarin.Forms.Platform.iOS bool _loaded; Size _queuedSize; + IPageController PageController => Element as IPageController; + IElementController ElementController => Element as IElementController; + public override UIViewController SelectedViewController { get { return base.SelectedViewController; } @@ -102,14 +105,14 @@ namespace Xamarin.Forms.Platform.iOS public override void ViewDidAppear(bool animated) { - ((TabbedPage)Element).SendAppearing(); + PageController.SendAppearing(); base.ViewDidAppear(animated); } public override void ViewDidDisappear(bool animated) { base.ViewDidDisappear(animated); - ((TabbedPage)Element).SendDisappearing(); + PageController.SendDisappearing(); } public override void ViewDidLayoutSubviews() @@ -126,7 +129,7 @@ namespace Xamarin.Forms.Platform.iOS var frame = View.Frame; var tabBarFrame = TabBar.Frame; - ((TabbedPage)Element).ContainerArea = new Rectangle(0, 0, frame.Width, frame.Height - tabBarFrame.Height); + PageController.ContainerArea = new Rectangle(0, 0, frame.Width, frame.Height - tabBarFrame.Height); if (!_queuedSize.IsZero) { @@ -149,7 +152,7 @@ namespace Xamarin.Forms.Platform.iOS { if (disposing) { - ((TabbedPage)Element).SendDisappearing(); + PageController.SendDisappearing(); Tabbed.PropertyChanged -= OnPropertyChanged; Tabbed.PagesChanged -= OnPagesChanged; FinishedCustomizingViewControllers -= HandleFinishedCustomizingViewControllers; @@ -258,9 +261,9 @@ namespace Xamarin.Forms.Platform.iOS void SetControllers() { var list = new List<UIViewController>(); - for (var i = 0; i < Element.LogicalChildren.Count; i++) + for (var i = 0; i < ElementController.LogicalChildren.Count; i++) { - var child = Element.LogicalChildren[i]; + var child = ElementController.LogicalChildren[i]; var v = child as VisualElement; if (v == null) continue; @@ -352,7 +355,7 @@ namespace Xamarin.Forms.Platform.iOS var originalIndex = -1; if (int.TryParse(viewControllers[i].TabBarItem.Tag.ToString(), out originalIndex)) { - var page = (Page)Tabbed.InternalChildren[originalIndex]; + var page = (TabbedPage)((IPageController)Tabbed).InternalChildren[originalIndex]; TabbedPage.SetIndex(page, i); } } @@ -360,7 +363,8 @@ namespace Xamarin.Forms.Platform.iOS void UpdateCurrentPage() { - ((TabbedPage)Element).CurrentPage = SelectedIndex >= 0 && SelectedIndex < Tabbed.InternalChildren.Count ? Tabbed.GetPageByIndex((int)SelectedIndex) : null; + var count = ((IPageController)Tabbed).InternalChildren.Count; + ((TabbedPage)Element).CurrentPage = SelectedIndex >= 0 && SelectedIndex < count ? Tabbed.GetPageByIndex((int)SelectedIndex) : null; } void IEffectControlProvider.RegisterEffect(Effect effect) |