diff options
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index e054a2d3..2ca9611e 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -349,12 +349,11 @@ namespace Xamarin.Forms.Platform.iOS //var pack = Platform.GetRenderer (view).ViewController; var titleIcon = NavigationPage.GetTitleIcon(page); - if (!string.IsNullOrEmpty(titleIcon)) + if (!string.IsNullOrEmpty(titleIcon?.File)) { try { - //UIImage ctor throws on file not found if MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure is true; - pack.NavigationItem.TitleView = new UIImageView(new UIImage(titleIcon)); + setTitleImage(pack,titleIcon); } catch { @@ -376,6 +375,14 @@ namespace Xamarin.Forms.Platform.iOS return pack; } + async void setTitleImage(ParentingViewController pack, FileImageSource titleIcon) + { + var source = Internals.Registrar.Registered.GetHandler<IImageSourceHandler>(titleIcon.GetType()); + var image = await source.LoadImageAsync(titleIcon); + //UIImage ctor throws on file not found if MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure is true; + pack.NavigationItem.TitleView = new UIImageView(image); + } + void FindParentMasterDetail() { var parentPages = ((Page)Element).GetParentPages(); @@ -652,7 +659,7 @@ namespace Xamarin.Forms.Platform.iOS } } - internal static void SetMasterLeftBarButton(UIViewController containerController, MasterDetailPage masterDetailPage) + internal static async void SetMasterLeftBarButton(UIViewController containerController, MasterDetailPage masterDetailPage) { if (!masterDetailPage.ShouldShowToolbarButton()) { @@ -667,7 +674,10 @@ namespace Xamarin.Forms.Platform.iOS { try { - containerController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(new UIImage(masterDetailPage.Master.Icon), UIBarButtonItemStyle.Plain, handler); + + var source = Internals.Registrar.Registered.GetHandler<IImageSourceHandler>(masterDetailPage.Master.Icon.GetType()); + var icon = await source.LoadImageAsync(masterDetailPage.Master.Icon); + containerController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(icon, UIBarButtonItemStyle.Plain, handler); } catch (Exception) { |