【发布时间】:2017-11-16 16:07:35
【问题描述】:
我正在使用渲染器来允许我在 TableView 中设置自定义页脚。渲染器可以工作,但我希望能够为不同的表格部分设置不同的页脚。例如,表格第 0 节的一个页脚和表格第 1 节的另一个页脚,一直到表格第 5 节。
这是我正在使用的 XAML:
<!-- <local:ExtFooterTableView x:Name="tableView" Intent="Settings" HasUnevenRows="True">-->
<TableView x:Name="tableView" Intent="Settings" HasUnevenRows="True">
<TableSection Title="Cards1">
<ViewCell Height="50">
<Label Text="Hello1" />
</ViewCell>
<ViewCell Height="50">
<Label Text="Hello2" />
</ViewCell>
</TableSection>
<TableSection Title="Cards2">
<TextCell Height="50" Text="Hello"></TextCell>
</TableSection>
</TableSection>
<!-- </local:ExtFooterTableView>-->
</TableView>
这里是 C# 类和渲染器:
public class ExtFooterTableView : TableView
{
public ExtFooterTableView()
{
}
}
和:
using System;
using Japanese;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(ExtFooterTableView), typeof(Japanese.iOS.ExtFooterTableViewRenderer))]
namespace Japanese.iOS
{
public class ExtFooterTableViewRenderer : TableViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<TableView> e)
{
base.OnElementChanged(e);
if (Control == null)
return;
var tableView = Control as UITableView;
var formsTableView = Element as TableView;
tableView.WeakDelegate = new CustomFooterTableViewModelRenderer(formsTableView);
}
private class CustomFooterTableViewModelRenderer : TableViewModelRenderer
{
public CustomFooterTableViewModelRenderer(TableView model) : base(model)
{
}
public override UIView GetViewForFooter(UITableView tableView, nint section)
{
Debug.WriteLine("xx");
if (section == 0)
{
return new UILabel()
{
// Text = TitleForFooter(tableView, section), // or use some other text here
Text = "abc",
TextAlignment = UITextAlignment.Left
// TextAlignment = NSTextAlignment.NSTextAlignmentJustified
};
}
else
{
return new UILabel()
{
// Text = TitleForFooter(tableView, section), // or use some other text here
Text = "def",
TextAlignment = UITextAlignment.Left
// TextAlignment = NSTextAlignment.NSTextAlignmentJustified
};
}
}
}
}
}
代码有效,但我想了解如何为 XAML 中的不同部分设置不同的页脚文本。像这样的:
从我看到的情况来看,部分代码似乎存在TitleForFooter(tableView, section),但我不确定如何使用它以及如何设置它。请注意,我并不是真的在寻找视图模型解决方案。我很高兴能够简单地将节页脚文本指定为 TableView XAML 的一部分。
如果有人能给我一些建议,我将不胜感激。
【问题讨论】:
标签: xamarin xamarin.forms