Je UITableView
à comprendre comment implémenter le style multitouch suivant UITableView
avec Monotouch:
J'ai le UITableView
fonctionnant avec la fonctionnalité "glisser pour supprimer". J'ai également ajouté ce qui suit:
logsTable.AllowsMultipleSelection = true; logsTable.AllowsMultipleSelectionDuringEditing = true;
Ce qui me permet de sélectionner les lignes, mais les cercles et les coches n'apparaissent pas. Est-ce une fonctionnalité iOS par défaut ou dois-je l'implémenter séparément?
il suffit d'append:
logsTable.SetEditing (true, true);
ou pour cacher
logsTable.SetEditing (false, true);
Vous devez créer une class qui hérite de UITableViewSource
. Vous devez implémenter au less deux methods dans ce nouvellement créé: GetCell
et RowsInSection
. Vous pouvez utiliser un UITableViewCell
personnalisé pour créer le dessin exact de la cellule ou vous pouvez utiliser la propriété Accessory
pour modifier un accessoire de cellule lorsque la cellule a été sélectionnée. Vous devriez avoir quelque chose de similaire à ceci:
private class SimpleTableViewSource : UITableViewSource { // Some data. Item1 will serve as the Text and Item2 will be a value indicating whether the cell is selected or not private List<Tuple<ssortingng, bool>> Data { get; set; } public SimpleTableViewSource() { this.Data = new List<Tuple<ssortingng, bool>>() { Tuple.Create("Item 1", false), Tuple.Create("Item 2", false), Tuple.Create("Item 3", false), Tuple.Create("Item 4", false), Tuple.Create("Item 5", false), Tuple.Create("Item 6", false), Tuple.Create("Item 7", false) }; } public override int RowsInSection(UITableView tableview, int section) { return this.Data.Count; } public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) { UITableViewCell cell = tableView.DequeueReusableCell("cell") ?? new UITableViewCell(); cell.TextLabel.Text = this.Data[indexPath.Row].Item1; // if the row is selected show checkmark if (this.Data[indexPath.Row].Item2) { cell.Accessory = UITableViewCellAccessory.Checkmark; } else { cell.Accessory = UITableViewCellAccessory.None; } return cell; } public override void RowSelected(UITableView tableView, NSIndexPath indexPath) { UITableViewCell cell = tableView.DequeueReusableCell("cell") ?? new UITableViewCell(); cell.Selected = !this.Data[indexPath.Row].Item2; this.Data[indexPath.Row] = Tuple.Create(this.Data[indexPath.Row].Item1, !this.Data[indexPath.Row].Item2); tableView.ReloadData(); } }
Et pour configurer votre instance de UITableView
(par exemple dans ViewDidLoad
):
this.tableView.Source = new SimpleTableViewSource(); this.tableView.ReloadData();