在iOS中,实现设置捆绑包被认为是最佳实践,这样用户就可以从iOS设置应用程序以及应用程序内访问您的应用程序设置。然而,这是iOS独有的概念。考虑到这一点,如果你想实现一个设置UI,你应该如何在Xamarin.Forms中实现它,这样你就可以获得iOS版的设置捆绑包,并且仍然可以在其他平台上获得某种设置视图?
使用此选项:https://github.com/jamesmontemagno/SettingsPlugin
更新:使用此:https://learn.microsoft.com/en-us/xamarin/essentials/preferences(Xamarin.Essentials取代了James Montemagno最初制作的许多伟大的x平台东西)
它提供了一个用于处理设置的跨平台API。它会将您的设置存储在iOS上的plist中。
至于通过简单地引用plist来构建设置UI(就像iOS本身所做的那样),这在Forms中并不是一件真正的事情。在Forms中,您可以使用Forms API实现自己的自定义设置Page。Forms有一个TableView UI元素,您可以在该元素上设置Intent
属性。Intent
可以设置为Data
、Form
、Menu
或Settings
的值。您可以使用Settings
值来指示您希望TableView类似于iOS设置屏幕。然后只需将每个TableView项绑定到设置类即可。
由于设置捆绑包是一个非常特定于iOS的功能,因此在iOS项目中实现它是唯一的方法。
然后我会创建一个ISettings接口来获取特定的设置。在iOS中,创建一个类来获取/设置该捆绑包中的设置,并使用依赖项注入。
然后为Android和WinPhone实现其他功能。您应该能够创建一个通用的共享页面,但Set和Get方法将根据每个平台进行切换。
Forms提供了多种方法来自定义每个平台的行为。您可以使用Device.OS或Device.OnPlatform()创建在Windows和Android上存在但在iOS上不存在的行为(即主菜单上的设置选项)(而是让用户使用设置捆绑包)。