如何处理UITableViewCell ID

时间:2018-07-21 11:58:49

标签: xamarin xamarin.ios

我有一个要从我的UITableViewCell类传递给我的UITableView的模型,如下所示

this.Source = new MyTableSource(ListOfItems);

我的ITEM模型只有两个值

public string Id { get; set; }
public string Title { get; set; }

我的UITableViewSource是以下

public class AllSource : UITableViewSource
{
    List<ITEM> ITEMS = new List<ITEM>();        
    public AllSource(List<ITEM> _items)
    {
        ITEMS = _items;           
    }

    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
    {
        var cell =  tableView.DequeueReusableCell("AllCell") as AllCell;

        if (cell == null)
        {
            cell = new AllCell();
            var views = NSBundle.MainBundle.LoadNib(AllCell.Key, cell, null);
            cell = Runtime.GetNSObject(views.ValueAt(0)) as AllCell;
        }
        var LINK = ITEMS[indexPath.Row];           
        cell.BindCell(LINK);            
        return cell;
    }

    public override nint RowsInSection(UITableView tableview, nint section)
    {
        return HomeDisplay.Count;
    }
}

我的cell.BindCell(LINK)是以下

public void BindCell(ITEM link)
{
 TitleText.Text = Link.Title;
}

我还使用“ RowSelected”,如下所示

 public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{                              
 tableView.DeselectRow(indexPath, true);
}

这可以,但是

  

我想将string格式的唯一ID附加到   Cell,因此当我触发RowSelected时,我会得到string的ID   唯一地标识所选项目的ID(不是indexPath)?

最初,我以为只是隐藏标签,但这似乎不是一个正确的选择。

这可能吗?

1 个答案:

答案 0 :(得分:1)

如果我认为您模型中的public string Id { get; set; }是唯一的Id,那么您可以像下面这样得到:

public override void RowSelected(UITableView tableView, NSIndexPath indexPath) 
{ 
    tableView.DeselectRow(indexPath, true);

    //Here you can get your Id of selected row
    string selectedId = ITEMS[indexPath.Row].Id;
}