Skip to content

Instantly share code, notes, and snippets.

@amay077
Last active July 20, 2016 16:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amay077/a2ed895c2cd6504bc7e57fc8c463e4b3 to your computer and use it in GitHub Desktop.
Save amay077/a2ed895c2cd6504bc7e57fc8c463e4b3 to your computer and use it in GitHub Desktop.
Xamarin.Forms の MasterDetailPage の左上ボタンをカスタマイズする Effect(iOSのみ)
using System;
using System.Collections.Generic;
using System.Linq;
using UIKit;
using NavigationSample.iOS;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ResolutionGroupName("mycompany")]
[assembly: ExportEffect(typeof(CustomBackButtonMasterDetailEffect), "CustomBackButtonMasterDetailEffect")]
namespace NavigationSample.iOS
{
public class CustomBackButtonMasterDetailEffect : PlatformEffect
{
protected override void OnAttached()
{
var page = Element as MasterDetailPage;
NavigationPage.SetHasBackButton(page, false);
page.Appearing += Page_Appearing;
}
protected override void OnDetached()
{
var page = Element as MasterDetailPage;
page.Appearing -= Page_Appearing;
}
void Page_Appearing(object sender, EventArgs e)
{
var vc = GetParentViewController();
var page = Element as MasterDetailPage;
var navigationItem = vc.NavigationController.TopViewController.NavigationItem;
navigationItem.LeftBarButtonItems = new UIBarButtonItem[]
{
new UIBarButtonItem("AAA", UIBarButtonItemStyle.Plain, (s, _) => { page.IsPresented = !page.IsPresented; })
};
}
UIViewController GetParentViewController()
{
UIResponder responder = this.Container;
while ((responder = responder.NextResponder) != null)
{
if (responder is UIViewController)
{
return (UIViewController)responder;
}
}
return null;
}
}
}
@amay077
Copy link
Author

amay077 commented Jul 20, 2016

こうなる↓

2016-07-21 00 54 54

@amay077
Copy link
Author

amay077 commented Jul 20, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment