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