检查单元格是否被选中并相应地设置格式 iOS UITableView

Check if cell is selected and format it accordingly iOS UITableView

我正在尝试实现一项功能,我想将 UITableView 的第一行设置为 selected。 UITableView 是我的 UIViewController 的子视图。我可以通过我的 UIViewController select 第一行。像这样:-

  var indexPath = NSIndexPath.FromRowSection(0, 0);

 newTableChoice.Source = new RatingScaleSource(this,data.TypeAsString ,data.Title, choiceList);
 newTableChoice.SelectRow(indexPath, false, UITableViewScrollPosition.Top);

现在我想在我的数据源中进一步实现它,如果第一行是 selected 那么我想向它添加一个附件,以便用户知道特定行是 select 默认情况下。

我尝试在我的 RatingScaleSource class 中实现它,这是我的数据源 :-

  public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
      cell = tableView.DequeueReusableCell("ChoiceTableCell") as ChoiceTableCell;
        if (tableView.CellAt(indexPath).Selected)
        {
            cell.Accessory = UITableViewCellAccessory.Checkmark;
        }
    }

但这会使应用程序崩溃,因为尚未创建 Cell。我想知道哪个函数可以检测该行是否已经 selected 以及我可以在哪里添加附件。感谢任何帮助。

SelectRow definition here

我们可以在Remarks

中看到如下句子

Calling this method does not trigger UITableViewSource.WillSelectRow(UITableView,NSIndexPath) nor will it send UITableView.SelectionDidChangeNotification notifications.

此方法不会触发任何方法。

tableView.CellAt(indexPath)GetCell 是不正确的,因为那个时候单元格还没有返回(意味着它还没有创建)。

我尝试了以下代码但没有成功,我认为 tableview 在完成渲染委托后选择了行。

cell = tableView.DequeueReusableCell("ChoiceTableCell") as ChoiceTableCell;
if (cell.Selected)
{
     cell.Accessory = UITableViewCellAccessory.Checkmark;
}

解决方案:

既然知道应该选择哪个索引,那么就可以在GetCell

中设置相同条件的配件
if (indexPath.IsEqual(NSIndexPath.FromRowSection(0, 0)))
{
    cell.Accessory = UITableViewCellAccessory.Checkmark;
}
else
{
    cell.Accessory = UITableViewCellAccessory.None;
}