利用可能な v3 テーブル ソースは次のとおりです。
抽象クラス
- MvxBaseTableViewSource
- 基本機能のみ
- いいえ
ItemsSource
- 通常は直接使用しません
- MvxTableViewSource.cs
- ベーステーブルから継承し、
ItemsSource
データ バインディング用に追加します
- 継承クラスは実装するだけでよい
protected abstract UITableViewCell GetOrCreateCellFor(UITableView tableView, NSIndexPath indexPath, object item);
具体的なクラス
一般的に私は使用します:
- デモで:
- a
MvxStandardTableViewSource
- カスタム セルを作成しなくてもリストを取得できるため
- 実際のコードでは:
- a
MvxSimpleTableViewSource
必要な細胞タイプが 1 つだけの場合
- 複数のセルタイプが必要な場合に継承するカスタムクラス
MvxTableViewSource
- たとえば、以下を参照してください
複数のセル型を持つ一般的な TableSource は通常、PolymorphicListItemTypesView.csのようになります。
public class PolymorphicListItemTypesView
: MvxTableViewController
{
public PolymorphicListItemTypesView()
{
Title = "Poly List";
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
var source = new TableSource(TableView);
this.AddBindings(new Dictionary<object, string>
{
{source, "ItemsSource Animals"}
});
TableView.Source = source;
TableView.ReloadData();
}
public class TableSource : MvxTableViewSource
{
private static readonly NSString KittenCellIdentifier = new NSString("KittenCell");
private static readonly NSString DogCellIdentifier = new NSString("DogCell");
public TableSource(UITableView tableView)
: base(tableView)
{
tableView.RegisterNibForCellReuse(UINib.FromName("KittenCell", NSBundle.MainBundle),
KittenCellIdentifier);
tableView.RegisterNibForCellReuse(UINib.FromName("DogCell", NSBundle.MainBundle), DogCellIdentifier);
}
public override float GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
{
return KittenCell.GetCellHeight();
}
protected override UITableViewCell GetOrCreateCellFor(UITableView tableView, NSIndexPath indexPath,
object item)
{
NSString cellIdentifier;
if (item is Kitten)
{
cellIdentifier = KittenCellIdentifier;
}
else if (item is Dog)
{
cellIdentifier = DogCellIdentifier;
}
else
{
throw new ArgumentException("Unknown animal of type " + item.GetType().Name);
}
return (UITableViewCell) TableView.DequeueReusableCell(cellIdentifier, indexPath);
}
}
}
このビデオは、カスタム セルの作成方法について非常に有益ですが、古くなっているようです
Xamarin 2.0 および V3 より前に作成されましたが、原理は非常に似ています。
その記事のコードが更新されました - https://github.com/slodge/MvvmCross-Tutorials/tree/master/MonoTouchCellTutorialを参照してください
それ以上:
また、MvxTableViewController を xib で動作させることができないように見えるため、通常の MvxViewController で UITableView を使用しています。
その後修正されたと思います - MvxTableViewController.cs#L33を参照してください