检查单元格是否被选中并相应地设置格式 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 以及我可以在哪里添加附件。感谢任何帮助。
我们可以在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;
}
我正在尝试实现一项功能,我想将 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 以及我可以在哪里添加附件。感谢任何帮助。
我们可以在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;
}