Objective-c установить тип ячейки на основе текста ячейки? iOS SDK

У меня динамическое табличное представление с 2 секциями и 4 строками в каждой, которые заполнены массивами.

Только одна ячейка должна быть проверена, на данный момент ни одна не проверена.

Я знаю текст ячейки, которую я хочу проверить.

Итак, мой вопрос, могу ли я установить accessoryType для ячейки на основе текста, который содержит эта ячейка?

Если IF cell.textLabel.text равен THIS, тогда установите эту ячейку для проверки accessoryType.

Любая помощь будет отличной.

РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ

Код, который я имею до сих пор, принимая во внимание комментарии ниже, таков:

  switch (indexPath.section) {
        case standardSection:
            serverLoc.textLabel.text = [self.serverSelection objectAtIndex:indexPath.row];
            if ([[self.serverSelection objectAtIndex:indexPath.row] rangeOfString:cellValue].location != NSNotFound) {
                serverLoc.accessoryType = UITableViewCellAccessoryCheckmark;
            }
            break;
        case qualitySection:
            serverLoc.textLabel.text = [self.qServerSelection objectAtIndex:indexPath.row];
            if ([[self.qServerSelection objectAtIndex:indexPath.row] rangeOfString:cellValue].location != NSNotFound) {
                serverLoc.accessoryType = UITableViewCellAccessoryCheckmark;
            }
            break;
        default:
            break;
    }

Разделы настраивают себя так:

Секция 1:

Чикаго, Иллинойс, Лондон, Великобритания Сан-Хосе, Калифорния, Вашингтон, округ Колумбия

Раздел 2:

Чикаго, Иллинойс (Q) Лондон, Великобритания (Q) Сан-Хосе, Калифорния (Q) Вашингтон, округ Колумбия (Q)

Как вы можете видеть, я проверяю значение CellValue. CellValue устанавливается с использованием делегата из предыдущего представления.

Допустим, это время равняется Лондону, Великобритания. Когда я прихожу к этой точке зрения, проверяются как Лондон, Великобритания, так и Лондон, Великобритания (Q), я хочу только ту, которая не отмечена (Q). Даже при использовании "isEqualToString" это произошло. Если cellValue равно Лондону, Великобритания (Q), то это работает.

2 ответа

Решение

Сделать это в cellForRowAtIndexPath, После того, как вы создали свою ячейку, просто проверьте значение в массиве (при условии, что массив содержит NSStrings). Так:

if ([[self.myArray objectAtIndex:indexPath.row] isEqualToString:@"the string I want"]) {
     cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

Изменить: на основе вашего комментария все строки будут начинаться с того же, но могут иметь различия. Вы могли бы сделать что-то вроде этого:

if ([[self.myArray objectAtIndex:indexPath.row] rangeOfString:@"London,"].location != NSNotFound) {
     cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

Это скажет, если строка NSString содержит "Лондон", тогда оцените как ДА. Или, другими словами, строка NSS содержит "Лондон"

Вы должны попытаться установить это значение при создании ячейки (из вашей "модели", не глядя на метку ячейки).

Если какое-то обстоятельство приводит к изменению значения, вам следует обновить модель (данные, которые вы используете при создании каждой ячейки); затем позвоните [self.tableview reloadData],

Другие вопросы по тегам