iOS - как установить галочку в UITableView при первой загрузке таблицы - PullRequest
1 голос
/ 08 ноября 2011

Я новичок в iOS. Я использую галочку в UITableView и храню проверенное значение в локальной базе данных. Когда я загружаю приложение в первый раз, я хочу установить значение галочки в зависимости от того, какое значение существует в БД. Как бы я это сделал? В настоящее время это то, что я делаю -

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
if ([indexPath compare:self.lastIndexPath] == NSOrderedSame) 
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} 
else 
{
    cell.accessoryType = UITableViewCellAccessoryNone;
}
// Set up the cell...
NSString *cellValue = [[self countryNames] objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

return cell;
}

, а затем в didSelectRowAtIndexPath -

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

// some stuff
self.lastIndexPath = indexPath;
[tableView reloadData];
}

Ответы [ 2 ]

3 голосов
/ 08 ноября 2011

Вы спрашиваете просто, как и когда установить галочку, или вы спрашиваете, как заполнить таблицу из базы данных (например, Core Data)?

Из вашего кода единственные данные, которые вы представляете, находятся в1003 * и неясно, при каких обстоятельствах вы хотите, чтобы в ячейке отображалась галочка.Что бы это ни было, просто проверьте условие и установите флажок при настройке ячейки для данных (после комментария «Настроить ячейку ...»).

Пример, если вы сохранили страну пользователей и отметилиэта ячейка:

// get the current country name
NSString *cellValue = [[self countryNames] objectAtIndex:indexPath.row];

// configure the cell
cell.textLLabel.text = cellValue;
UITableViewCellAccessoryType accessory = UITableViewCellAccessoryNone;
if ([cellValue isEqualToString:self.usersCountry]) {
    accessory = UITableViewCellAccessoryCheckmark;
}
cell.accessoryType = accessory;
0 голосов
/ 08 ноября 2011

Если у вас есть статические данные таблицы, вам просто нужно сохранить раздел и строку выбранной ячейки табличного представления.Если у вас есть динамические данные, вам нужно будет сохранить уникальные данные для выбранной ячейки в базе данных и сравнить их с содержимым ячейки при загрузке.Когда вы загружаете свои ячейки в cellForRowAtIndexPath:, просто установите аксессуар для этой ячейки на UITableViewCellAccessoryCheckmark, а также установите self.lastIndexPath = indexPath для сравнения позже.

Кроме того, я обычно использую [indexPath isEqual:self.lastIndexPath] вместо compare:,В любом случае ничего не изменится, просто для удобства чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...