public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) { UITableViewCell thisCell = null; int row = indexPath.Row; if (activity.RequireUsername) { if (row > 0) { // compensate for index offset compared to row data row--; } else { // Enter name cell TaskCell_NameEntry nameCell = (TaskCell_NameEntry)tableView.DequeueReusableCell(TaskCell_NameEntry.Key, indexPath); nameCell.Tag = row; nameCell.UpdateContent(enteredName, editName); nameCell.SetNeedsUpdateConstraints(); nameCell.UpdateConstraintsIfNeeded(); return(nameCell); } } if (Rows[row].TaskType.IdName == "INFO") { TaskCell_Info infoCell = (TaskCell_Info)tableView.DequeueReusableCell(TaskCell_Info.Key, indexPath); infoCell.Tag = row; infoCell.UpdateContent(Rows[row]); thisCell = infoCell; } else if (new string[] { "MATCH_PHOTO", "TAKE_PHOTO", "TAKE_VIDEO", "REC_AUDIO", "DRAW", "DRAW_PHOTO" }.Contains(Rows[row].TaskType.IdName)) { ResultTaskCell resultCell = (ResultTaskCell)tableView.DequeueReusableCell(ResultTaskCell.Key, indexPath); resultCell.Tag = row; resultCell.UpdateContent(Rows[row], startTask, resClicked); thisCell = resultCell; } else { TaskCell_Simple cell = (TaskCell_Simple)tableView.DequeueReusableCell(TaskCell_Simple.Key, indexPath); cell.Tag = row; cell.UpdateContent(Rows[row], startTask); thisCell = cell; } if (thisCell != null) { thisCell.SetNeedsUpdateConstraints(); thisCell.UpdateConstraintsIfNeeded(); } return(thisCell); }