如何使用依赖注入将Flyoutnavigation用于我的iOS项目。
我决定坚持使用Android的默认MasterDetailPage,因为它看起来不像iOS。
这是我到目前为止所做的:
在PCL中
IMainPage.cs:
public interface IMainPage
{
Page GetMainPage();
}
App.cs:
public partial class App : Application
{
public App()
{
MainPage = DependencyService.Get<IMainPage>().GetMainPage();
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
在Android中
MainPage_Android.cs:
[assembly: Xamarin.Forms.Dependency(typeof(MainPage_Android))]
namespace ProjectName.Droid
{
public class MainPage_Android : MasterDetailPage, IMainPage
{
private NavigationPage detail;
private MasterPage master;
public Page GetMainPage()
{
MasterDetailPage mdp = new MasterDetailPage();
//Master
master = new MasterPage();
MasterBehavior = MasterBehavior.Popover;
mdp.Master = master;
//Detail
detail = new NavigationPage(new Home())
{
BarBackgroundColor = Color.FromHex("#01A0E1"),
BarTextColor = Color.White
};
mdp.Detail = detail;
return mdp;
}
}
}
在iOS
答案 0 :(得分:1)
如果您想在Android上使用默认样式并在iOS上使用自定义样式,您可以尝试在iOS上为MasterDetailPage制作自定义渲染器。然后嵌入你的Flyoutnavigation
。
这是我的iPad渲染器:
[assembly: ExportRenderer(typeof(MainPage), typeof(MainPageRenderer))]
namespace FlyoutNavigationDemo.iOS
{
public class MainPageRenderer : TabletMasterDetailRenderer
{
//put your Flyoutnavigation's code here
}
}
由于Flyoutnavigation
代码太多。我为您制作了一个小样本,您可以参考here了解更多详情。