gpt4 book ai didi

c# - MonoTouch 中的 UITableView 多选

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:06:57 25 4
gpt4 key购买 nike

我无法弄清楚如何使用 Monotouch 实现以下样式的多点触控 UITableView: enter image description here

我有 UITableView 使用“滑动删除”功能。我还添加了以下内容:

logsTable.AllowsMultipleSelection = true;
logsTable.AllowsMultipleSelectionDuringEditing = true;

这使我可以选择行,但是不会出现圆圈和刻度。这是默认的 iOS 功能还是我必须单独实现?

最佳答案

您需要创建一个继承自 UITableViewSource 的类。您需要在这个新创建的对象中实现至少两个方法:GetCellRowsInSection。您可以使用自定义 UITableViewCell 来创建单元格的精确设计,或者您可以使用 Accessory 属性在单元格被选中时修改单元格附件。你应该有类似这样的东西:

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<string, bool>> Data { get; set; }

public SimpleTableViewSource()
{
this.Data = new List<Tuple<string, 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();
}
}

并设置您的 UITableView 实例(例如在 ViewDidLoad 中):

this.tableView.Source = new SimpleTableViewSource();
this.tableView.ReloadData();

关于c# - MonoTouch 中的 UITableView 多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21331321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com