我是xamarin和MvvmCross框架的新手。我目前正在为Android,Windows Phone和iOS创建一个多平台应用程序。我目前在查找应用程序正在运行的平台时遇到问题。
我想要做的是在 app.cs 文件中添加if语句。我想检查这是否是一个iOS应用程序然后做的东西,否则这样做。但我没有找到任何好办法,我甚至不确定它可以在这个文件中完成
到目前为止,这是我的代码:
using Cirrious.CrossCore;
using Cirrious.CrossCore.IoC;
using Cirrious.MvvmCross.ViewModels;
using tax.Mobile.Core.Interfaces;
using tax.Mobile.Core.Logic;strong text
namespace tax.Mobile.Core
{
public partial class App : MvxApplication
{
public override void Initialize()
{
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
#if (__iOS__)
RegisterAppStart<ViewModels.FirstViewModel>();
#else
RegisterAppStart<ViewModels.SearchViewModel>();
#endif
Mvx.RegisterType<IWebService, MockWebService>();
}
}
}
谢谢!
答案 0 :(得分:0)
这不起作用,PCL库在项目属性中使用自己的符号编译或由#define SYMBOL
语法定义。
要选择开始屏幕,您可以使用App构造函数和Setup.CreateApp方法
1)在PCL中创建包含平台选项的枚举
public enum OS
{
Droid, Touch, WinPhone, WinStore, Mac, Wpf
}
2)在App类构造函数
中使用此枚举值public App (OS os)
{
_os = os;
}
public override void Initialize()
{
/*...*/
switch(_os)
{
case OS.Touch:
RegisterAppStart<ViewModels.FirstViewModel>(); break;
default:
RegisterAppStart<ViewModels.SearchViewModel>();
}
/*...*/
}
3)在Setup.CreateApp()方法
中将当前操作系统传递给App{
return new.Core.App(OS.Droid)
}