summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.iOS
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2016-05-04 06:18:40 -0600
committerRui Marinho <me@ruimarinho.net>2016-05-04 13:18:40 +0100
commita2148444bafd728090c39c1f40700b43baded1e4 (patch)
treee6e116a491df5e501269d30f63f81942c90f4645 /Xamarin.Forms.Platform.iOS
parente7d8c5aa5784cd059cdfcf4a75b9e2c59fc9d3d0 (diff)
downloadxamarin-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.cs31
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;