diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2016-05-04 06:18:40 -0600 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-05-04 13:18:40 +0100 |
commit | a2148444bafd728090c39c1f40700b43baded1e4 (patch) | |
tree | e6e116a491df5e501269d30f63f81942c90f4645 /Xamarin.Forms.Platform.iOS | |
parent | e7d8c5aa5784cd059cdfcf4a75b9e2c59fc9d3d0 (diff) | |
download | xamarin-forms-a2148444bafd728090c39c1f40700b43baded1e4.tar.gz xamarin-forms-a2148444bafd728090c39c1f40700b43baded1e4.tar.bz2 xamarin-forms-a2148444bafd728090c39c1f40700b43baded1e4.zip |
Add INavigationPageController (#149)
Diffstat (limited to 'Xamarin.Forms.Platform.iOS')
-rw-r--r-- | Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index da3a0aa2..5fb69c0d 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -6,6 +6,7 @@ using System.Drawing; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; using CoreGraphics; @@ -217,18 +218,20 @@ namespace Xamarin.Forms.Platform.iOS "NavigationPage must have a root Page before being used. Either call PushAsync with a valid Page, or pass a Page to the constructor before usage."); } - navPage.PushRequested += OnPushRequested; - navPage.PopRequested += OnPopRequested; - navPage.PopToRootRequested += OnPopToRootRequested; - navPage.RemovePageRequested += OnRemovedPageRequested; - navPage.InsertPageBeforeRequested += OnInsertPageBeforeRequested; + var navController = ((INavigationPageController)navPage); + + navController.PushRequested += OnPushRequested; + navController.PopRequested += OnPopRequested; + navController.PopToRootRequested += OnPopToRootRequested; + navController.RemovePageRequested += OnRemovedPageRequested; + navController.InsertPageBeforeRequested += OnInsertPageBeforeRequested; UpdateTint(); UpdateBarBackgroundColor(); UpdateBarTextColor(); // If there is already stuff on the stack we need to push it - navPage.StackCopy.Reverse().ForEach(async p => await PushPageAsync(p, false)); + ((INavigationPageController)navPage).StackCopy.Reverse().ForEach(async p => await PushPageAsync(p, false)); _tracker = new VisualElementTracker(this); @@ -260,11 +263,13 @@ namespace Xamarin.Forms.Platform.iOS var navPage = (NavigationPage)Element; navPage.PropertyChanged -= HandlePropertyChanged; - navPage.PushRequested -= OnPushRequested; - navPage.PopRequested -= OnPopRequested; - navPage.PopToRootRequested -= OnPopToRootRequested; - navPage.RemovePageRequested -= OnRemovedPageRequested; - navPage.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; + + var navController = ((INavigationPageController)navPage); + navController.PushRequested -= OnPushRequested; + navController.PopRequested -= OnPopRequested; + navController.PopToRootRequested -= OnPopToRootRequested; + navController.RemovePageRequested -= OnRemovedPageRequested; + navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; } base.Dispose(disposing); @@ -542,7 +547,7 @@ namespace Xamarin.Forms.Platform.iOS for (var i = 0; i < removed; i++) { // lets just pop these suckers off, do not await, the true is there to make this fast - await ((NavigationPage)Element).PopAsyncInner(animated, true); + await ((INavigationPageController)Element).PopAsyncInner(animated, true); } // because we skip the normal pop process we need to dispose ourselves controller.Dispose(); @@ -625,7 +630,7 @@ namespace Xamarin.Forms.Platform.iOS void UpdateLeftBarButtonItem(ParentingViewController containerController) { var currentChild = containerController.Child; - var firstPage = ((NavigationPage)Element).StackCopy.LastOrDefault(); + var firstPage = ((INavigationPageController)Element).StackCopy.LastOrDefault(); if ((currentChild != firstPage && NavigationPage.GetHasBackButton(currentChild)) || _parentMasterDetailPage == null) return; |