【问题标题】:Xamarin Forms - Slide out menu to select itemsXamarin Forms - 滑出菜单以选择项目
【发布时间】:2018-05-07 18:09:06
【问题描述】:

我有一个 xamarin 表单应用程序搜索屏幕,允许用户从列表中选择一个项目。目前我正在使用一个选项列表,用户必须滚动并选择并单击完成。这是使用本机控件。但是,我注意到在 iOS 中的设置菜单等中设计了它,以便当用户想要从列表中选择时,右侧会显示一个箭头,将他们带到另一个页面以从列表。对我来说,这似乎是一个更好的用户体验。这是一个前任:

我的问题是这个 withing xamarin 表单中内置了一些东西吗?我想我可以创建一个列表视图,然后单击传递到另一个页面。任何例子都值得赞赏。

【问题讨论】:

标签: xamarin xamarin.forms


【解决方案1】:

没有内置的,但实现这一点并不难。

要设置披露指示符(箭头),请实现从ImageCellRenderer 派生的自定义渲染器并覆盖GetCell

public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
    var viewCell = base.GetCell(item, reusableCell, tv);

    viewCell.Accessory = UITableViewCellAccessory.DisclosureIndicator;

    return viewCell;
}

当用户点击该单元格时,您应该以模态方式导航到显示语言列表的视图。

添加 Cancel-Button 也不是很困难,但需要另外一步。您需要将新的语言选择页面包装在 NavigationPage 中,并以模态方式推送该 NavigationPage。此外,您必须将工具栏项添加到包装页面 (see here)。

在页面内有一个SearchBar 视图和一个ListView 下面。要添加复选标记,您必须使用自定义渲染器(如上图所示从 ImageCellRenderer 派生)实现自定义单元格,如果选择了自定义单元格,则将 UITableViewCell.Accessory 设置为 Checkmark

if(item is SelectableCell selectableCell)
{
    var selected = selectableCell.IsSelected;
    viewCell.Accessory = selected ? UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.Checkmark;
}

请注意:可选单元格不是 Xamarin.Forms 的标准单元格,而是您必须自己实现的单元格,包括可绑定属性 IsSelected

这基本上应该是实现所需的步骤。我假设了填补空白所需的基本 Xamarin.Forms 知识。

【讨论】:

  • 您上面的示例似乎是针对 iOS 的,但是否有跨平台的方式来完成此操作?
  • @Scott 是的,特定于 iOS,没错。该披露指标非常具有 iOS 风格。
  • 好的,有没有更好的跨平台模式建议?我宁愿不必编写 2 个不同的代码库,因为我想坚持使用 xamarin 表单?除非我想成为本地人,否则似乎有很多限制
  • 有一些特定于操作系统的代码是很正常的。通常您不会维护两个代码库,而只会维护一个,而是将您的平台代码保留在同一解决方案中的平台特定项目中。
猜你喜欢
  • 2020-10-18
  • 2020-11-05
  • 2019-10-21
  • 2017-10-11
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
相关资源
最近更新 更多